Source
Running and Deploying
Tornadoは自身のHTTPサーバを持っていて、他のpython製webフレームワークとデプロイの仕方が異なる。
WSGIの設定をするのではなく、main()関数を書く。
def main():
app = make_app()
app.listen(8888)
IOLoop.current().start()
if __name__ == '__main__':
main()
注)プロセスごとにOpenできるファイルの上限を/etc/security/limits.confで設定しておく。
マルチプロセスモードで起動したい場合は、main関数を以下のように設定する。
def main():
app = make_app()
server = tornado.httpserer.HTTPServer(app)
server.bind(8888)
server.start(0)
IOLoop.current().start()
注)各子プロセスはそれぞれIOLoopをもつ。このように実行するとZeroDowntime updateは難しい。
それぞれのプロセスは別のポートをlistenするようにデプロイするのが良さそう。
Nginxなどの後ろで動かす時
HTTPServerにxheaders=Trueと設定しておく。そうすると、X-Real-IPなどのヘッダでユーザのIPを渡すようになる。
静的ファイル
static_pathをsettingsに追加する。そうすると、TornadoからStaticファイルを配布できる。
ブラウザのキャッシュを使ってパフォーマンスを改善するのに、static_url("images/logo.png")が使える。関数の引数は適当な静的ファイル。
debug mode and automatic reloading
Applicationのコンストラクタでdebug=Trueを設定することでデバッグモードでアプリケーションを起動できる。デバッグモードではオートリロードがONになっていたり、キャッシュが向こうになっていたりする。