可能重复:
与urllib2的或其他HTTP库中的多个(异步)连接?
我正在运行的Python代码从第三方API抢了HTTP实时数据的Linux的Web服务器上。 该数据放入一个MySQL数据库。 我需要做大量的查询了很多网址,我需要做快(快=更好)。 目前我使用urllib3作为我的HTTP库。 什么是去了解这一点的最好方法是什么? 我应该产卵多线程(如果是的话,有多少?),并有不同的URL每个查询? 我很想听听你对这个想法 - 谢谢!
可能重复:
与urllib2的或其他HTTP库中的多个(异步)连接?
我正在运行的Python代码从第三方API抢了HTTP实时数据的Linux的Web服务器上。 该数据放入一个MySQL数据库。 我需要做大量的查询了很多网址,我需要做快(快=更好)。 目前我使用urllib3作为我的HTTP库。 什么是去了解这一点的最好方法是什么? 我应该产卵多线程(如果是的话,有多少?),并有不同的URL每个查询? 我很想听听你对这个想法 - 谢谢!
如果有很多是真的有很多比你可能想使用异步IO不线程。
请求 + GEVENT = grequests
GRequests允许您使用与GEVENT的要求轻松地进行异步HTTP请求。
import grequests
urls = [
'http://www.heroku.com',
'http://tablib.org',
'http://httpbin.org',
'http://python-requests.org',
'http://kennethreitz.com'
]
rs = (grequests.get(u) for u in urls)
grequests.map(rs)
您应该使用多线程以及流水线请求。 例如搜索 - >详情 - >保存
你可以使用的线程数并不只依赖于您的设备。 多少个请求的服务可以服务? 多少个并发请求,它允许运行? 即使你的带宽可以是一个瓶颈。
如果你在谈论一种刮 - 该服务可以要求一定的限制后阻止你,所以你需要使用代理服务器或多个IP绑定。
至于我,在大多数情况下,我可以运行Python脚本在我的笔记本50-300并发请求。
听起来像一个优秀的应用扭曲 。 下面是一些Web相关的例子 ,包括如何下载网页 。 这里是一个相关的问题与扭曲的数据库连接 。
需要注意的是扭曲的不依赖于线程同时做多件事情。 相反,它需要一个合作的多任务处理方式---你的主要脚本启动反应器和反应器调用您设置的功能。 你的函数必须返回控制反应器的反应器之前,可以继续工作。