Python は 3.4 で asyncio ライブラリを導入し、3.6 でキーワード async と await を追加しました。それ以来、非同期フレームワークは急速に発展し、そのパフォーマンスは Node.js に匹敵します。CPU を集中的に使用するタスクでない限り、非同期フレームワークを使用しない理由。
Web 開発者であれば、非同期 Web フレームワークに関してより多くの選択肢が得られるようになりました。
1、トルネード
Tornado は決して新しいフレームワークではなく、もともとは FriendFeed (後に Facebook に買収) によって 2009 年にリリースされました。非同期プログラミング機能は最初から提供されています。
Tornado は Web フレームワークであるだけでなく、非同期アプリケーションを自分で構築するために使用できる非同期モジュールが多数組み込まれています。これらのモジュールには次のものが含まれます。
- コルーチンとその他のプリミティブ (tornado.gen、tornado.locks、tornado.queues など)
- ネットワークモジュール (tornado.ioloop、tornado.iostream)
- 非同期サーバーとクライアント (tornado.httpserver、httpclient など)
これらのモジュールを通じて、Tornado は独自の非同期 Web フレームワーク モジュールを構築します。
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
Tornado は Python コミュニティで多くのファンを獲得しており、経験豊富なアーキテクトは Tornado を使用して強力なシステムを構築しています。このフレームワークは長い間同時実行の問題を解決してきましたが、WSGI 標準をサポートしていないため (ほとんどの Python ライブラリはまだ同期しています)、まだ主流になっていません。
中国では志湖は唐蘭島を基にして造られたと言われています。
2、おやつ
Sanic は 3 年間誕生したフレームワークです。Python バージョン 3.6 以降のみをサポートし、一般的な async/await 構文をサポートし、すぐに使えるため、多くのドキュメントを読まなくても HTTP プロセッサを作成できます。
async キーワードを除いて、構文は flask と同じです。
from sanic import Sanic
from sanic.response import json
app = Sanic()
@app.route("/")
async def test(request):
return json({
"hello": "world"})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)
Sanic はおそらく、Python の世界で最も人気があり、人気のある非同期フレームワークです。プロジェクトに必要な機能がすべて揃っています: ルーティング、ミドルウェア、Cookie、バージョン管理、ブループリント、クラスベースのビュー、静的ファイル、ストリーム、ソケットに加えて、テンプレート、データベース ドライバー、ファイル I/O、キューなどを統合できます。 。
3、ビボラ
Vibora は、Sanic と同様に、最速の Python Web サーバーになることを目指しています。同社のウェブサイトのトップページにフレーム比較表があります。
Vibora は、他のフレームワークよりも数倍高速であり、競合他社である Sanic よりも 2 倍以上高速であると主張しています。もちろん、このベンチマークは割り引いて考えてください。
Vibora は構文と機能の点で Sanic に匹敵しますが、Sanic は長い間存在しており、より大きなコミュニティがあるため、より成熟していると思います。
from vibora import Vibora, JsonResponse
app = Vibora()
@app.route('/')
async def home():
return JsonResponse({
'hello': 'world'})
if __name__ == '__main__':
app.run(host="0.0.0.0", port=8000)
4、クォート
Flask が好きだが非同期サポートもサポートしたい場合は、間違いなく Quart を気に入るでしょう。
Quart は、WSGI 標準の後継である ASGI 標準に準拠しており、非同期サポートを提供します。Quart は Flask に似ているだけでなく、Flask API とも互換性があります。フレームワークの作成者は、Flask の特徴を維持し、それに非同期、WebSocket、および HTTP 2 のサポートだけを追加したいと考えています。したがって、Quart の使用方法は Flask ドキュメントから学ぶことができます。ただし、Quart の関数は非同期であることに注意してください。
from quart import Quart
app = Quart(__name__)
@app.route('/')
async def hello():
return 'hello'
app.run()
Flask とほぼ同じ
Quart は Flask から進化したため、ルーティング、ミドルウェア、セッション、テンプレート、ブループリントなど、Flask のすべての機能が利用可能です。実際、Quart 内で直接 Flask 拡張機能を使用することもできます。ただし、1 つ問題は、Python 3.7 以降のみをサポートしていることです。
5、高速API
FastAPI は、非同期 Python フレームワークの中で最も機能が豊富で文書化されているようです。
このフレームワークの作成者は、Django から Sanic などの最新のフレームワーク、さらには NestJS (Node.js、Typescript Web フレームワーク) まで、他のいくつかのフレームワークを詳しく調査しています。
この構文は、これまでに出会った他のフレームワークよりも興味深いとさえ言えます。
rom fastapi import FastAPI
app = FastAPI()
@app.get("/users/me")
async def read_user_me():
return {
"user_id": "the current user"}
@app.get("/users/{user_id}")
async def read_user(user_id: str):
return {
"user_id": user_id}
FastAPI が他のフレームワークに勝る切り札は、API ドキュメントを自動的に生成することです。API
インターフェイスを作成した後、SwaggerUI、ReDoc などの標準準拠の UI を使用して API を使用できます。
パフォーマンスについてはどうですか?FastAPI は Starlette ライブラリに基づいて構築されており、そのパフォーマンスは Node、場合によっては Go にも匹敵します。全体として、FastAPI が Python の非同期フレームワークのトップになるだろうと私は本当に感じています。
要約する
最近、Python 非同期エコシステムでは多くのことが起こっています。新しいフレームワークが出現し、古いフレームワークが書き直され、多くのライブラリが非同期動作をサポートし始めています。Web フレームワークの場合、Python は優れたパフォーマンスを提供する準備ができています。Node または Go への移行を長い間考えていた場合、今すぐ移行する必要はありません。
Python を学ぶ前に、Python に関する情報をまとめて CSDN 公式にアップロードしました。Python に関する他の知識を学びたい友人がいる場合は、以下の QR コードをスキャンして入手できます。
1.Python学習概要
Python の全方位の技術要点を各分野の知識をまとめて整理しており、上記の知識に応じて対応する学習リソースを見つけることができ、より包括的に学習できる点が便利です。
2. Python の必須開発ツール
3. 入門学習ビデオ
4. 実践事例
光学理論は役に立ちません。学んだことを実際に適用するには、それに従って練習する必要があります。このとき、いくつかの実際の事例から学ぶことができます。
5. Python副業のパートタイムルートとフルタイムルート
6. インターネット企業の面接での質問
高収入の仕事を見つけるには Python を学ばなければなりません。以下の面接の質問は、アリババ、テンセント、バイトなどの一流インターネット企業からの最新の面接資料であり、アリババの上司が権威ある回答をしています。面接情報に基づいて、誰もが満足のいく仕事を見つけることができると思います。