「非同期処理に対応したPython Webフレームワークを探している」
「大量アクセスに対応できるWebアプリを作りたい」
「PythonのWebアプリケーションを開発したい」
このような場合には、Tornadoがオススメです。
この記事では、Tornadoについて解説しています。
本記事の内容
- Tornadoとは?
- Tornadoのシステム要件
- Tornadoのインストール
- Tornadoの動作確認
それでは、上記に沿って解説していきます。
Tornadoとは?
Tornadoは、PythonのWebフレームワークです。
もともとは、非同期ネットワーキング・ライブラリとして開発されました。
技術的には、ノンブロッキングネットワーク I/Oを使用しています。
そのことにより、何万ものオープンコネクションに拡張することが可能となっています。
簡単に言うと、非同期処理で多くのアクセスを処理できるということです。
また、Tornadoは他のPython Webフレームワークと大きく異なる部分があります。
それは、WSGIをベースにしていないという点です。
Tornadoは、通常、プロセスごとに 1 つのスレッドのみで実行されます。
このあたりを説明すると、かなりの長編になります。
とにかく、TornadoはWSGIではなくスレッドベースで動くと覚えておきましょう。
したがって、Tornadoを動かすのにApacheなどのWebサーバーは必須ではありません。
PythonだけでWebアプリケーションを公開できるということになります。
以上、Tornadoについて説明しました。
次は、Tornadoのシステム要件を説明します。
Tornadoのシステム要件
現時点(2022年7月)でのTornadoの最新バージョンは、6.2となります。
この最新バージョンは、2022年7月4日にリリースされています。
サポートOSに関しては、公式には以下に対応しています。
- macOS
- Linux
ただ、Windowsでも動くことは動きます。
しかし、Windowsでの実稼働は推奨されていません。
実際、実稼働となるとLinuxがOSに採用されるはずです。
そのため、Windowsはあくまで開発環境で利用するぐらいにしておきましょう。
サポート対象となるPythonのバージョンは、以下となっています。
- Python 3.7
- Python 3.8
- Python 3.9
- Python 3.10
これは、素晴らしいサポート状況と言えます。
以下のPython公式開発サイクルに完全に準拠しています。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
Python 3.6は、2021年末でサポート期限が切れているので要注意です。
Python 3.7以降であれば、基本的にはどんな環境でも問題ないでしょう。
以上、Tornadoのシステム要件を説明しました。
次は、Tornadoのインストールを説明します。
Tornadoのインストール
検証は、次のバージョンのPythonで行います。
> python -V Python 3.10.4
まずは、現状のインストール済みパッケージを確認しておきます。
> pip list Package Version ---------- ------- pip 22.1.2 setuptools 63.1.0 wheel 0.36.2
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、Tornadoのインストールです。
Tornadoのインストールは、以下のコマンドとなります。
pip install tornado
Tornadoのインストールは、すぐに終わります。
終了したら、どんなパッケージがインストールされたのかを確認します。
> pip list Package Version ---------- ------- pip 22.1.2 setuptools 63.1.0 tornado 6.2 wheel 0.36.2
依存するパッケージは、ありません。
その意味では、既存環境へ容易にTornadoを導入できそうです。
以上、Tornadoのインストールを説明しました。
次は、Tornadoの動作確認を説明します。
Tornadoの動作確認
Tornadoの動作確認を行います。
動作確認で用いるのは、次のコードです。
import asyncio import tornado.web 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())
上記を実行すると、処理中のままになります。
そのままの状態でブラウザを開きます。
そして、次のURLへアクセス。
http://localhost:8888/
サーバーにTornadoをインストールしているなら、localhostをそのサーバーIPアドレスに変更します。
IPアドレスの調べ方は、次の記事を参考にしてください。
あと、ファイアウォールを使用しているなら、ポートを開放する必要があります。
今回は、ポート8888を利用するコードとなっています。
無事にアクセスできれば、次のような画面が表示されます。
ここまで確認できれば、Tornadoの動作に問題はありません。
以上、Tornadoの動作確認を説明しました。