Maison >développement back-end >Tutoriel Python >Comment transformer rapidement votre code Python en API
En ce qui concerne le développement d'API, vous pouvez penser à Django REST Framework, Flask et FastAPI. Oui, ils peuvent être utilisés pour écrire des API. Cependant, le framework partagé aujourd'hui peut vous permettre de convertir plus rapidement les fonctions existantes en API. Sanic.
Sanic[1], est un serveur Web Python3.7+ et un framework Web conçus pour améliorer les performances. Il permet l'utilisation de la syntaxe async/await ajoutée dans Python 3.5, qui peut efficacement éviter le blocage et améliorer la vitesse de réponse. Sanic s'engage à fournir une méthode simple et rapide qui intègre la création et le démarrage pour implémenter un service HTTP facile à modifier et à développer. Sanic dispose de fonctions prêtes à l'emploi qui peuvent être utilisées pour écrire, déployer et étendre la production. application Web de niveau supérieur. Actuellement, il compte 16,3 000 étoiles sur Github et bénéficie d'un vaste soutien communautaire.
Possède les fonctionnalités suivantes :
Voyons maintenant comment convertir le code en API. Supposons qu'il y ait deux fonctions déjà écrites dans Functions.py :
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
Pour convertir en API, écrivez simplement un autre 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)
Ensuite, il vous suffit de le faire. pour exécuter python sanic_app.py pour démarrer le service API :
D'après les résultats d'exécution, nous pouvons savoir que sanic s'exécute déjà en mode environnement de production, ce qui est différent des autres frameworks Web, qui ont un serveur de développement. Et précisez que c'est uniquement pour le développement. La situation avec Sanic est exactement le contraire. Le serveur intégré peut être utilisé directement dans des environnements de production.
Vous pouvez utiliser curl pour tester l'interface :
❯ curl "http://localhost:8000/getdatetime" {"now":"2022-07-25 06:34:25"}%❯ curl "http://localhost:8000/sumxy?x=12&y=34" {"result":46}%
Si vous utilisez post et utilisez json pour passer des paramètres, c'est aussi simple :
@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 est testé comme ceci :
❯ curl -X 'POST' 'http://localhost:8000/sumxy' -H "Content-Type: application/json" -d '{"x":10,"y":20}' {"result":30}%
Sanic En plus de son propre serveur (la plupart Il est recommandé d'apporter votre propre serveur pour la production), qui est également compatible avec ASGI. Cela signifie que vous pouvez utiliser votre serveur ASGI préféré pour exécuter Sanic. Il existe désormais trois serveurs ASGI grand public, Daphné, Uvicorn (c'est ce qu'utilise FastAPI) et Hypercorn.
Peut également être déployé sur Gunicorn :
gunicorn myapp:app --bind 0.0.0.0:1337 --worker-class sanic.worker.GunicornWorker
Traitement des fichiers statiques et enregistrement des journaux d'accès aux demandes. Si vous souhaitez obtenir de meilleures performances, vous pouvez envisager d'utiliser Nginx comme proxy et laisser Nginx traiter les journaux d'accès et les fichiers statiques de cette façon. plus rapide que le traitement en Python.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!