2017-06-19 4 views
0

Tornado 4.5.1とPython 3.6を使用してWebサーバーを構築しています。 サーバーを起動するときにオブジェクトを初期化し、サーバーが実行されている間はオブジェクトを使用可能にします。この質問からTornado Webサーバーでオブジェクトを1回初期化する

:私はRequestHandlers内部の初期化()関数がありHTTPリクエストがあり、そしてそれは一度初期化するたびに呼ばれることが理解 Does initialize in tornado.web.RequestHandler get called every time for a request? 、私は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で一度の初期化を行うための最も単純で明瞭な方法です。

関連する問題