在Tornado Web服务器中初始化对象一次
问题描述:
我正在使用Tornado 4.5.1和Python 3.6构建Web服务器。 我想在启动服务器时初始化一个对象,并在服务器运行期间保持它可用。在Tornado Web服务器中初始化对象一次
从这个问题: Does initialize in tornado.web.RequestHandler get called every time for a request? 予理解的是,初始化()内RequestHandlers函数被称为每次有一个HTTP请求的时间,并且初始化一次,我需要该对象存储tornado.web.Application内部。
我的问题是:我如何将这个对象添加到应用程序初始化?我需要继承tornado.web.Application吗?或者是否有API来启用它?
我无法从Tornado documentation了解这一点。
答
你也可以继承的Application
类,之后在您的请求处理程序,你可以像this访问你的应用程序实例:
RequestHandler.application
,或者如果你是在方法从您的请求处理程序
self.application
假设您在应用程序中添加了变量my_var
,要访问它,您将执行以下操作:
self.application.my_var
或
RequestHandler.application.my_var
答
您可以直接编译成模块全球:
my_global_var = set() # Or whatever type of object you need
那么你的程序启动时变量将被初始化,最后该计划的寿命。这是在Python中进行一次性初始化的最简单和最清晰的方式。