This repo contains a Requests session that returns the amazing Twisted's awaitable Deferreds instead of Response objects.
It's awesome, basically — check it out:
Let's send 100 concurrent requests! \o/
Example Usage using async
/await
—
from requests_threads import AsyncSession session = AsyncSession(n=100) async def _main(): rs = [] for _ in range(100): rs.append(await session.get('http://httpbin.org/get')) print(rs) if __name__ == '__main__': session.run(_main)
This example works on Python 3 only. You can also provide your own asyncio
event loop!
Example Usage using Twisted —
from twisted.internet.defer import inlineCallbacks from twisted.internet.task import react from requests_threads import AsyncSession session = AsyncSession(n=100) @inlineCallbacks def main(reactor): responses = [] for i in range(100): responses.append(session.get('http://httpbin.org/get')) for response in responses: r = yield response print(r) if __name__ == '__main__': react(main)
This example works on both Python 2 and Python 3.
Each request is sent via a new thread, automatically. This works fine for basic use cases. This automatically uses Twisted's asyncioreactor
, if you do not provide your own reactor (progress to be made there, help requested!).
This is a an experiment, and a preview of the true asynchronous API we have planned for Requests that is currently in the works, but requires a lot of development time. If you'd like to help (p.s. we need help, send me an email).
This API is likely to change, over time, slightly.
$ pipenv install requests-threads ✨🍰✨
This codebase was inspired by future work on Requests, as well as requests-twisted.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4