¶
Tornado は、Python の Web フレームワークであり、非同期ネットワークライブラリです。元々は FriendFeed で開発されました。ノンブロッキングネットワーク I/O を使用することで、Tornado は数万ものオープン接続にスケールでき、ロングポーリング、WebSocket、その他各ユーザーとの長期間接続を必要とするアプリケーションに最適です。
クイックリンク¶
現在のバージョン: 6.4.1 (PyPI からダウンロード、リリースノート)
Hello, world¶
Tornado のシンプルな「Hello, world」例を示します。
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
でインストールできます。ソース配布物には、このようにインストールされた場合に存在しないデモアプリケーションが含まれているため、ソースの 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 は asyncio
上に構築されており、Windows をサポートしていますが、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 のもとでライセンスされています。