ホームページ >バックエンド開発 >Python チュートリアル >Python コードをすばやく API に変換する方法

Python コードをすばやく API に変換する方法

PHPz
PHPz転載
2023-04-14 18:28:102113ブラウズ

API 開発と言えば、Django REST Framework、Flask、FastAPI を思い浮かべるかもしれません。はい、これらを使用して API を作成できます。ただし、今日共有されているフレームワークを使用すると、既存の関数を API に変換できます。サニックです。

Sanic の概要

Sanic[1] は、パフォーマンスを向上させるために設計された Python3.7 Web サーバーおよび Web フレームワークです。これにより、Python 3.5 で追加された async/await 構文を使用できるようになり、ブロックを効果的に回避し、応答速度を向上させることができます。 Sanic は、作成と起動を統合して、変更と拡張が簡単な HTTP サービスを実装する、シンプルで高速な方法を提供することに取り組んでいます。Sanic には、運用環境の作成、展開、拡張に使用できるすぐに使える機能が備わっています。レベルの Web アプリケーション。現在、Github には 16.3k のスターがあり、広範なコミュニティ サポートが提供されています。

次の機能があります:

  • 組み込みの非常に高速な Web サーバー
  • 本番環境に対応
  • 非常に高い拡張性
  • ASGI のサポート
  • シンプルで直感的な API 設計
  • コミュニティ保証
  • 既存のコードを API にすばやく変換する方法

次に、その方法を見てみましょう。既に 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 サービスを開始します:

Python コードをすばやく 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}%

他の場所に展開

##Sanic は、独自のサーバー (ほとんどの場合、運用には独自のサーバーを使用することが推奨されます) に加えて、ASGI とも互換性があります。これは、お気に入りの ASGI サーバーを使用して Sanic を実行できることを意味します。現在、主流の ASGI サーバーは、Daphne、Uvicorn (FastAPI が使用するもの)、および Hypercorn の 3 つです。

Gunicorn にもデプロイ可能:

gunicorn myapp:app --bind 0.0.0.0:1337 --worker-class sanic.worker.GunicornWorker

静的ファイルの処理とリクエストのアクセス ログの記録。パフォーマンスを向上させたい場合は、Nginx をプロキシとして使用することを検討し、Nginx に処理を任せることができます。ログと静的ファイルは、Python で処理するよりもはるかに高速です。

以上がPython コードをすばやく API に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。