ホームページ >バックエンド開発 >Python チュートリアル >高性能の非同期 Web 開発のための優れた Python ライブラリ

高性能の非同期 Web 開発のための優れた Python ライブラリ

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-21 00:16:09229ブラウズ

owerful Python Libraries for High-Performance Async Web Development

多作な作家として、アマゾンで私の本を探索することをお勧めします。 継続的なサポートのために、Medium で私をフォローしてください。ありがとう!あなたのサポートは非​​常に貴重です!

Python の非同期機能は Web 開発に革命をもたらしました。 私は、この可能性を最大限に活用するいくつかの強力なライブラリを使用する機会がありました。 非同期 Web 開発に大きな影響を与えた 6 つの主要なライブラリを詳しく見てみましょう。

FastAPI は、すぐに高パフォーマンス API 作成のための私のお気に入りのフレームワークになりました。その速度、使いやすさ、自動 API ドキュメントは優れています。 FastAPI による Python の型ヒントの使用により、コードの可読性が向上し、リクエストの自動検証とシリアル化が可能になります。

これは簡単な FastAPI アプリケーションの例です:

<code class="language-python">from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}</code>

このコードは、2 つのエンドポイントを持つ基本的な API を確立します。 item_id パラメーターの型ヒントにより、その整数データ型が自動的に検証されます。

クライアント側とサーバー側の両方の非同期 HTTP 操作において、aiohttp は一貫して信頼できることが証明されています。 その多用途性は、同時 API リクエストから完全な Web サーバーの構築にまで及びます。

複数の同時リクエストのクライアントとして aiohttp を使用する方法は次のとおりです:

<code class="language-python">import aiohttp
import asyncio

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

async def main():
    urls = ['http://example.com', 'http://example.org', 'http://example.net']
    async with aiohttp.ClientSession() as session:
        tasks = [fetch(session, url) for url in urls]
        responses = await asyncio.gather(*tasks)
        for url, response in zip(urls, responses):
            print(f"{url}: {len(response)} bytes")

asyncio.run(main())</code>

このスクリプトは複数の URL からコンテンツを同時に取得し、非同期操作の効率性を示します。

Sanic は、Flask のようなシンプルさと非同期パフォーマンスの組み合わせに感銘を受けました。 これは、非同期プログラミングの可能性を最大限に活用しながら、Flask に精通した開発者向けに設計されています。

基本的な Sanic アプリケーション:

<code class="language-python">from sanic import Sanic
from sanic.response import json

app = Sanic("MyApp")

@app.route("/")
async def test(request):
    return json({"hello": "world"})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)</code>

これにより、シンプルな JSON API エンドポイントが確立され、Sanic の明確な構文が強調表示されます。

Tornado は、スケーラブルでノンブロッキングな Web アプリケーションを作成するための信頼できる選択肢です。統合されたネットワーク ライブラリは、ロングポーリングと WebSocket に特に役立ちます。

Tornado WebSocket ハンドラーの例を次に示します:

<code class="language-python">import tornado.ioloop
import tornado.web
import tornado.websocket

class EchoWebSocket(tornado.websocket.WebSocketHandler):
    def open(self):
        print("WebSocket opened")

    def on_message(self, message):
        self.write_message(u"You said: " + message)

    def on_close(self):
        print("WebSocket closed")

if __name__ == "__main__":
    application = tornado.web.Application([
        (r"/websocket", EchoWebSocket),
    ])
    application.listen(8888)
    tornado.ioloop.IOLoop.current().start()</code>

このコードは、受信したメッセージをミラーリングする WebSocket サーバーをセットアップします。

Quart は、完全な書き換えを行わずに Flask アプリケーションを非同期操作に移行する必要があるプロジェクトにとって変革をもたらしました。その API は Flask の API を厳密に反映しており、スムーズな移行を保証します。

シンプルな Quart アプリケーション:

<code class="language-python">from quart import Quart, websocket

app = Quart(__name__)

@app.route('/')
async def hello():
    return 'Hello, World!'

@app.websocket('/ws')
async def ws():
    while True:
        data = await websocket.receive()
        await websocket.send(f"echo {data}")

if __name__ == '__main__':
    app.run()</code>

これは標準ルートと WebSocket ルートの両方を示しており、Quart の多用途性を示しています。

Starlette は、軽量 ASGI フレームワークの私の好みの基盤として機能します。 FastAPI の基盤として、高パフォーマンスの非同期 Web サービスの構築に優れています。

基本的な Starlette アプリケーション:

<code class="language-python">from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.routing import Route

async def homepage(request):
    return JSONResponse({'hello': 'world'})

app = Starlette(debug=True, routes=[
    Route('/', homepage),
])</code>

これにより、Starlette のミニマリスト デザインが強調される、シンプルな JSON API が設定されます。

これらの非同期ライブラリを使用することで、アプリケーションのパフォーマンスと信頼性を向上させるためのいくつかのベスト プラクティスを学びました。

長時間実行されるタスクの場合、メイン イベント ループのブロックを防ぐために、バックグラウンド タスクまたはジョブ キューが不可欠です。 FastAPI の BackgroundTasks を使用した例を次に示します:

<code class="language-python">from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}</code>

これにより、ログの書き込みが非同期的にスケジュールされ、即時の API 応答が可能になります。

データベース操作には、非同期データベース ドライバーが不可欠です。 asyncpg (PostgreSQL) や motor (MongoDB) などのライブラリは非常に貴重です。

外部 API と対話する場合、適切なエラー処理と再試行を備えた非同期 HTTP クライアントが不可欠です。

パフォーマンスに関しては、FastAPI と Sanic は一般に、単純な API に対して優れた生のパフォーマンスを提供します。 ただし、フレームワークの選択は、多くの場合、プロジェクトのニーズとチームの精通度に依存します。

FastAPI は、自動 API ドキュメントとリクエスト検証で優れています。 Aiohttp は、HTTP クライアント/サーバーの動作をより詳細に制御します。 Sanic は、非同期機能を備えた Flask のようなシンプルさを提供します。 Tornado の統合ネットワーキング ライブラリは、WebSocket とロングポーリングに最適です。 Quart は、Flask アプリケーションの非同期操作への移行を容易にします。 Starlette は、カスタム フレームワークや軽量の ASGI サーバーの構築に最適です。

要約すると、これら 6 つのライブラリにより、Python で効率的で高性能な非同期 Web アプリケーションを構築する能力が大幅に向上しました。 それぞれに独自の強みがあり、最適な選択はプロジェクトの特定の要件によって異なります。 これらのツールを利用し、非同期のベスト プラクティスに従うことにより、同時実行性、応答性、スケーラブル性の高い Web アプリケーションを作成しました。


101 冊

101 Books は、著者 Aarav Joshi が共同設立した AI を活用した出版社です。 当社の高度な AI テクノロジーは出版コストを非常に低く抑えており、一部の書籍の価格は $4 という低価格であり、質の高い知識をすべての人が利用できるようにしています。

Amazon で私たちの本 Golang Clean Code をご覧ください。

最新ニュースを入手してください。本を検索するときは、Aarav Joshi を検索すると、さらに多くのタイトルが見つかります。 特別割引については、提供されたリンクを使用してください!

私たちの作品

私たちの作品をご覧ください:

インベスターセントラル | 投資家中央スペイン人 | 中央ドイツの投資家 | スマートな暮らし | エポックとエコー | 不可解な謎 | ヒンドゥーヴァ | エリート開発者 | JS スクール


私たちは中程度です

Tech Koala Insights | エポックズ&エコーズワールド | インベスター・セントラル・メディア | 不可解な謎 中 | 科学とエポックミディアム | 現代ヒンドゥーヴァ

以上が高性能の非同期 Web 開発のための優れた Python ライブラリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。