2016-05-28 8 views
1

Ich habe das folgende Skelett Tornado Programm:Umfang warnings.simplefilter (‚Fehler‘, Image.DecompressionBombWarning)

class IS(BaseHandler): 
    @tornado.gen.coroutine 
    def get(self): 
     #render stuff 

    def post(self): 
     try: 
     # load Image 
     except RuntimeWarning: 
     # handle exception 

class Application(tornado.web.Application): 
    def __init__(self): 
     # Current handlers 
     handlers = [ 
     (r'/',IS), 
     ] 

     # Settings dict for Application 
     settings = { 
     "template_path": "templates", 
     "static_path": "static" 
     } 
     tornado.web.Application.__init__(self,handlers,debug=True,**settings) 

if __name__ =='__main__': 
    # is this the right place to set the warnings? 
    warnings.simplefilter('error', Image.DecompressionBombWarning) 
    app=Application() 
    server=tornado.httpserver.HTTPServer(app) 
    server.listen(7000) 
    tornado.ioloop.IOLoop.current().start() 

Ich frage mich, was der Umfang der Einstellungen der Warnungen ist? Muss ich es innerhalb der IS-Klasse setzen? Oder ist wo ich es ok eingestellt habe? Oder sollte es in der Anwendung init sein?

Antwort

2

warnings.simplefilter wirkt sich auf den gesamten Prozess aus (wenn es nicht von einem with warnings.catch_warnings() Block aufgerufen wird). Um also Warnungen global zu steuern, müssen Sie sie nur einmal beim Start aufrufen, wie Sie es getan haben.

+0

Wie immer danke Ben. Ich schulde dir so viele Drinks, die ich vergessen habe: P –