from txrequests import Session
@defer.inlineCallbacks
def main():
use with statement to cleanup session’s threadpool, and connectionpool after use
you can also use session.close() if want to use session for long term use
with Session() as session:
first request is started in background
d1 = session.get(‘http://httpbin.org/get’)
second requests is started immediately
d2 = session.get(‘http://httpbin.org/get?foo=bar’)
wait for the first request to complete, if it hasn’t already
response_one = yield d1
print(‘response one status: {0}’.format(response_one.status_code))
print(response_one.content)
wait for the second request to complete, if it hasn’t already
response_two = yield d2
print(‘response two status: {0}’.format(response_two.status_code))
print(response_two.content)
]]>:)
]]>En gros, tu nous proposes un hack qui est franchement quand même assez sale/dangereux d’un point de vue asynchrone:
Normalement on n’utilise le déportage dans un thread qu’en dernier recours quand on ne peut pas faire autrement, car ça a un impact sur les performances de ta boucle évenementielle et que tu peux éventuellement ne pas être threadsafe.
Or là, tu mets cette technique en avant, notamment en la packageant dans une lib.
D’où ma remarque sur aiohttp qui est à la fois réellement asynchrone et une API à la requests.
Après, j’entends bien que tu as déjà beaucoup de code en Twisted, j’en ai eu aussi, et j’ai dû faire parfois des trucs crades dedans car pas le temps et/ou pas le choix.
]]>C’est comme si je te disais “comment mettre des pneus neiges plus facilement sur votre 4×4” et que tu me répondais “pourquoi tu n’utilises pas une clio ?”. Ben, parce que là, j’utilise un 4×4, et j’ai besoin de pneus neige ?
]]>