Nick Heiner
Nick Heiner

Reputation: 122412

Google App Engine/WSGIApplication: How to check debug?

In the WSGIApplication's constructor, it takes a debug argument. Is there a way to access the value set for this from the the handler classes that inherit from webapp.RequestHandler?

def main():
    application = webapp.WSGIApplication([('/', fooHandler)
                                          ],
                                        debug=True)
    util.run_wsgi_app(application)

Upvotes: 2

Views: 379

Answers (1)

Alex Martelli
Alex Martelli

Reputation: 881555

A WSGIApplication instance records the value of the debug parameter as self.__debug: the double underscore is a strong indication that no code outside the class itself is supposed to look at this attribute, as it's considered an internal application detail and could change "at any time" (even in a minor revision of the API). If you want to ignore this extremely strong indication, you could, technically, use webapp.WSGIApplication.active_instance._WSGIApplication__debug to look at it, but it's a truly bad idea.

A much better idea is to subclass WSGIApplication in your own code to make the attribute publically visible:

class MyWSGIapp(webapp.WSGIApplication):
    def __init__(self, url_mapping, debug=False):
        self.debugmode = debug
        webapp.WSGIApplication.__init__(self, url_mapping, debug)

Now, when you use MyWSGIapp instead of webapp.WSGIApplication to start things off, webapp.WSGIApplication.active_instance.debugmode becomes a clean, solid way to access the attribute of interest from wherever else in your application.

Upvotes: 1

Related Questions