¶
Tornadoは、もともとFriendFeedで開発されたPythonのWebフレームワークおよび非同期ネットワークライブラリです。ノンブロッキングネットワークI/Oを使用することで、Tornadoは何万ものオープン接続にスケールでき、ロングポーリング、WebSocket、および各ユーザーとの長期間の接続を必要とするその他のアプリケーションに最適です。
クイックリンク¶
現在のバージョン: 6.4.1 (PyPIからダウンロード、リリースノート)
Hello, world¶
以下は、Tornadoのシンプルな「Hello, world」のWebアプリの例です。
import asyncio
import tornado
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
async def main():
app = make_app()
app.listen(8888)
await asyncio.Event().wait()
if __name__ == "__main__":
asyncio.run(main())
この例では、Tornadoの非同期機能は使用していません。そのためには、シンプルなチャットルームを参照してください。
スレッドとWSGI¶
Tornadoは、ほとんどのPython Webフレームワークとは異なります。WSGIに基づいておらず、通常はプロセスごとに1つのスレッドでのみ実行されます。Tornadoの非同期プログラミングのアプローチの詳細については、ユーザーガイドを参照してください。
tornado.wsgi
モジュールではWSGIの一部のサポートが利用できますが、開発の焦点ではなく、ほとんどのアプリケーションはWSGIを使用する代わりに、Tornado独自のインターフェース(tornado.web
など)を直接使用するように記述する必要があります。
一般に、Tornadoコードはスレッドセーフではありません。他のスレッドから呼び出すことが安全なTornadoの唯一のメソッドは、IOLoop.add_callback
です。IOLoop.run_in_executor
を使用して、別のスレッドでブロッキング関数を非同期的に実行することもできますが、run_in_executor
に渡される関数は、Tornadoオブジェクトを参照しないようにしてください。run_in_executor
は、ブロッキングコードと対話するための推奨される方法です。
asyncio
統合¶
Tornadoは標準ライブラリのasyncio
モジュールと統合されており、同じイベントループを共有しています(Tornado 5.0以降のデフォルト)。一般に、asyncio
で使用するように設計されたライブラリは、Tornadoと自由に組み合わせることができます。
インストール¶
pip install tornado
TornadoはPyPIにリストされており、pip
でインストールできます。ソースディストリビューションには、Tornadoをこの方法でインストールした場合には存在しないデモアプリケーションが含まれているため、ソースtarballのコピーをダウンロードするか、gitリポジトリをクローンすることをお勧めします。
前提条件: Tornado 6.3にはPython 3.8以降が必要です。以下のオプションパッケージが役立つ場合があります。
pycurlは、オプションの
tornado.curl_httpclient
で使用されます。Libcurlバージョン7.22以降が必要です。pycaresは、スレッドが適切でない場合に使用できる代替の非ブロッキングDNSリゾルバーです。
プラットフォーム: TornadoはUnixライクなプラットフォーム向けに設計されており、epoll
(Linux)、kqueue
(BSD/macOS)、または /dev/poll
(Solaris) をサポートするシステムで最高のパフォーマンスとスケーラビリティを発揮します。
TornadoはWindowsでも実行できますが、この構成は公式にはサポートされておらず、本番環境での使用は推奨されていません。Windowsでは一部の機能が欠落しており(マルチプロセスモードを含む)、スケーラビリティが制限されています(TornadoはWindowsをサポートするasyncio
に基づいて構築されていますが、TornadoはWindowsでスケーラブルなネットワークに必要なAPIを使用していません)。
ドキュメント¶
このドキュメントはPDFおよびEpub形式でも利用できます。
- ユーザーガイド
- Webフレームワーク
- HTTPサーバーとクライアント
- 非同期ネットワーク
- コルーチンと並行処理
- 他のサービスとの統合
- ユーティリティ
- よくある質問
- リリースノート
- Tornado 6.4.1の新機能
- Tornado 6.4.0の新機能
- Tornado 6.3.3の新機能
- Tornado 6.3.2の新機能
- Tornado 6.3.1の新機能
- Tornado 6.3.0の新機能
- Tornado 6.2.0の新機能
- Tornado 6.1.0の新機能
- Tornado 6.0.4の新機能
- Tornado 6.0.3の新機能
- Tornado 6.0.2の新機能
- Tornado 6.0.1の新機能
- Tornado 6.0の新機能
- Tornado 5.1.1の新機能
- Tornado 5.1の新機能
- Tornado 5.0.2の新機能
- Tornado 5.0.1の新機能
- Tornado 5.0の新機能
- Tornado 4.5.3の新機能
- Tornado 4.5.2の新機能
- Tornado 4.5.1の新機能
- Tornado 4.5の新機能
- Tornado 4.4.3の新機能
- Tornado 4.4.2の新機能
- Tornado 4.4.1の新機能
- Tornado 4.4の新機能
- Tornado 4.3の新機能
- Tornado 4.2.1の新機能
- Tornado 4.2の新機能
- Tornado 4.1の新機能
- Tornado 4.0.2の新機能
- Tornado 4.0.1の新機能
- Tornado 4.0の新機能
- Tornado 3.2.2の新機能
- Tornado 3.2.1の新機能
- Tornado 3.2の新機能
- Tornado 3.1.1の新機能
- Tornado 3.1の新機能
- Tornado 3.0.2の新機能
- Tornado 3.0.1の新機能
- Tornado 3.0の新機能
- Tornado 2.4.1の新機能
- Tornado 2.4の新機能
- Tornado 2.3の新機能
- Tornado 2.2.1の新機能
- Tornado 2.2の新機能
- Tornado 2.1.1の新機能
- Tornado 2.1の新機能
- Tornado 2.0 の新機能
- Tornado 1.2.1 の新機能
- Tornado 1.2 の新機能
- Tornado 1.1.1 の新機能
- Tornado 1.1 の新機能
- Tornado 1.0.1 の新機能
- Tornado 1.0 の新機能
議論とサポート¶
Tornadoに関する議論はTornado開発者メーリングリストで、バグ報告はGitHubのissueトラッカーで行うことができます。追加のリソースへのリンクはTornado wikiにあります。新しいリリースはアナウンスメントメーリングリストで告知されます。
TornadoはApache License, Version 2.0の下で利用可能です。
このウェブサイトおよびすべてのドキュメントは、Creative Commons 3.0の下でライセンスされています。