J'ai demandé Make a non-blocking request with requests when running Flask with Gunicorn and Gevent avant, et maintenant j'ai une question plus avancée sur des sujets connexes.Faire une demande web asynchrone avec des demandes lors de l'exécution Flask avec Gunicorn et Gevent
Mon application Flask recevra une demande, effectuera un traitement, puis effectuera deux demandes différentes auprès de deux points de terminaison externes lents différents, chacun prenant 2 secondes pour répondre. Mon code flacon se présente comme suit:
import requests
@app.route('/do', methods = ['POST'])
def do():
resulta = requests.get('slow api a') // takes 2 seconds to response
resultb = requests.get('slow api b') // takes 2 seconds to response
return resulta.content + resultb.content
Et je lance mon gunicorn avec
gunicorn server:app -k gevent -w 4
Avec ce code, pour chaque demande qui envoient à ce service web, je dois attendre 4 secondes pour répondre (Il envoie à 'lent api a' d'abord, puis fait 'lent api b'). Comment puis-je modifier l'exemple pour que la demande envoyée à 'slow api a' et 'slow api b' puisse être envoyée en même temps, afin que je puisse obtenir une réponse de ce service web en 2 secondes au lieu de 4 secondes?
version python? 3.5? 3.6? – Grimmy
Utiliser [grequests] (https://github.com/kennethreitz/grequests) au lieu des requêtes –
La version de python est 2.7, se penchera sur les requêtes grequests. – JLTChiu