API 開発と言えば、Django REST Framework、Flask、FastAPI を思い浮かべるかもしれません。はい、これらを使用して API を作成できます。ただし、今日共有されているフレームワークを使用すると、既存の関数を API に変換できます。サニックです。
Sanic[1] は、パフォーマンスを向上させるために設計された Python3.7 Web サーバーおよび Web フレームワークです。これにより、Python 3.5 で追加された async/await 構文を使用できるようになり、ブロックを効果的に回避し、応答速度を向上させることができます。 Sanic は、作成と起動を統合して、変更と拡張が簡単な HTTP サービスを実装する、シンプルで高速な方法を提供することに取り組んでいます。Sanic には、運用環境の作成、展開、拡張に使用できるすぐに使える機能が備わっています。レベルの Web アプリケーション。現在、Github には 16.3k のスターがあり、広範なコミュニティ サポートが提供されています。
次の機能があります:
次に、その方法を見てみましょう。既に function.py に 2 つの関数が記述されている場合は、コードを API に変換します:
import datetime def get_datetime(): return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") def sum_x_y(x, y): return x + y
API に変換するには、別の sanic_app.py:
from sanic import Sanic, json from functions import get_datetime, sum_x_y app = Sanic("CodeToAPI") HOST = "localhost" PORT = 8000 @app.route("/getdatetime") async def getdatetime(request): return json({"now": get_datetime()}) @app.get('/sumxy') async def sumxy(request): parameters = request.args result = sum_x_y(int(parameters['x'][0]), int(parameters['y'][0])) return json({'result': result}) if __name__ == "__main__": app.run(host=HOST, port=PORT, debug=False)
を記述するだけです。次に、python sanic_app を実行するだけです。 .py を使用して API サービスを開始します:
実行結果から、sanic はすでに運用環境モードで実行されていることがわかります。これは他の Web フレームワークとは異なります。開発サーバーが組み込まれており、開発専用であることが明確になります。 Sanic の場合はまったく逆で、内蔵サーバーを運用環境で直接使用できます。
インターフェイスのテストにはカールを使用できます:
❯ curl "http://localhost:8000/getdatetime" {"now":"2022-07-25 06:34:25"}%❯ curl "http://localhost:8000/sumxy?x=12&y=34" {"result":46}%
post を使用し、json を使用してパラメーターを渡す場合も簡単です:
@app.post('/sumxy') async def sumxy(request): parameters = request.json print(parameters) result = sum_x_y(int(parameters['x']), int(parameters['y'])) return json({'result': result})
curl テストは次のようになります:
❯ curl -X 'POST' 'http://localhost:8000/sumxy' -H "Content-Type: application/json" -d '{"x":10,"y":20}' {"result":30}%
gunicorn myapp:app --bind 0.0.0.0:1337 --worker-class sanic.worker.GunicornWorker静的ファイルの処理とリクエストのアクセス ログの記録。パフォーマンスを向上させたい場合は、Nginx をプロキシとして使用することを検討し、Nginx に処理を任せることができます。ログと静的ファイルは、Python で処理するよりもはるかに高速です。
以上がPython コードをすばやく API に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。