2017-06-19 78 views
0

我正在使用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了解这一点。

回答

2

你也可以继承的Application类,之后在您的请求处理程序,你可以像this访问你的应用程序实例:

RequestHandler.application 

,或者如果你是在方法从您的请求处理程序

self.application 

假设您在应用程序中添加了变量my_var,要访问它,您将执行以下操作:

self.application.my_var 

RequestHandler.application.my_var 
1

您可以直接编译成模块全球:

my_global_var = set() # Or whatever type of object you need 

那么你的程序启动时变量将被初始化,最后该计划的寿命。这是在Python中进行一次性初始化的最简单和最清晰的方式。