Maison > développement back-end > Tutoriel Python > Comment transformer rapidement votre code Python en API

Comment transformer rapidement votre code Python en API

PHPz
Libérer: 2023-04-14 18:28:10
avant
2132 Les gens l'ont consulté

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.

Introduction à 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 :

  • Serveur Web extrêmement rapide intégré
  • Prêt pour la production
  • Extrêmement évolutif
  • Support ASGI
  • Conception d'API simple et intuitive
  • Garantie communautaire
  • Comment convertir rapidement du code existant en API

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
Copier après la connexion

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)
Copier après la connexion

Ensuite, il vous suffit de le faire. pour exécuter python sanic_app.py pour démarrer le service API :

Comment transformer rapidement votre code Python en 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}%
Copier après la connexion

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})
Copier après la connexion

curl est testé comme ceci :

❯ curl -X 'POST' 'http://localhost:8000/sumxy' -H "Content-Type: application/json" -d '{"x":10,"y":20}'
{"result":30}%
Copier après la connexion

Déployé dans d'autres

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
Copier après la connexion

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!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal