Jef*_*eff 9 python python-requests
可能重复:
Python请求的异步请求
python模块请求是非阻塞的吗?我没有在文档中看到有关阻止或非阻塞的任何内容.
如果它是阻塞的,你会建议哪个模块?
aba*_*ert 42
喜欢urllib2
,requests
是阻止.
但我也不建议使用另一个库.
最简单的答案是在单独的线程中运行每个请求.除非你有数百个,否则这应该没问题.(多少数百个太多取决于您的平台.在Windows上,限制可能是您拥有的线程堆栈内存;在大多数其他平台上,截止时间更早.)
如果你做的有几百个,你可以把它们放在一个线程池.本ThreadPoolExecutor
例中concurrent.futures
的网页几乎正是你需要的; 只需更改对urllib
通话的requests
呼叫.(如果您使用的是2.x,请使用futures
PyPI上相同软件包的backport.)缺点是您实际上并不是一次启动所有1000个请求,而是第一个,例如8.
如果你有数百个,并且它们都需要并行,这听起来像是一份工作gevent
.让它monkeypatch一切,然后编写你用线程写的完全相同的代码,但产生greenlet
s而不是Thread
s.
grequests
,直接从旧的异步支持演变而来requests
,有效地为你做了gevent
+ requests
包装.对于最简单的情况,它很棒.但对于任何非平凡的事情,我发现阅读显式gevent
代码更容易.你的旅费可能会改变.
当然,如果你需要做的事情真的看中了,你可能想去twisted
,tornado
或tulip
(或等待几个月tulip
是STDLIB的一部分).
归档时间: |
|
查看次数: |
20870 次 |
最近记录: |