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

Comment transformer rapidement votre code Python en API

PHPz
PHPzavant
2023-04-14 18:28:102079parcourir

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

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 :

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}%

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}%

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer