Site original : Sam & Max: Python, Django, Git et du cul
Utiliser les outils de Twisted de base pour faire les requêtes est assez chiant, et quand on est habitué à requests, c’est le retour au moyen age.
La lib treq tente de corriger ça mais n’utilise pas l’API de requests et ne propose pas certaine de ses fonctionnalités.
Du coup, après l’article d’hier, j’ai regardé le code source de requests-futures pour voir si je pouvais pas faire la même chose pour Twisted.
Et on peut. J’ai fais un petit (bon, ok minuscule) wrapper qui permet de faire ça :
from requests_twisted import TwistedRequestsSession session = TwistedRequestsSession() defer = session.get('http://github.com/sametmax/') def print_status(response): print(response.url, response.status_code) defer.addCallback(print_status) |
Ça utilise l’objet Session de requests et donc on peut faire session.get|post|touslestrucsderequests
et toute l’API est disponible.
Donc si vous en avez besoin :
pip install requests-twisted |
Le truc fait 3 lignes et 2 tests unittaires, en fait c’est juste un deferToThreads
derrière. C’est certain que c’est moins performant que l’approche de treq qui utilise directement l’Agent non bloquant de Twisted, mais pour la plupart des cas c’est juste plus pratique, plus familier, et surtout, plus facile à maintenir :)