对于Python的上发送多个HTTP请求理想的方法? [重复] 对于Python的上发送多个HT

2019-05-14 01:05发布

可能重复:
与urllib2的或其他HTTP库中的多个(异步)连接?

我正在运行的Python代码从第三方API抢了HTTP实时数据的Linux的Web服务器上。 该数据放入一个MySQL数据库。 我需要做大量的查询了很多网址,我需要做快(快=更好)。 目前我使用urllib3作为我的HTTP库。 什么是去了解这一点的最好方法是什么? 我应该产卵多线程(如果是的话,有多少?),并有不同的URL每个查询? 我很想听听你对这个想法 - 谢谢!

Answer 1:

如果有很多是真的有很多比你可能想使用异步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)


Answer 2:

您应该使用多线程以及流水线请求。 例如搜索 - >详情 - >保存

你可以使用的线程数并不只依赖于您的设备。 多少个请求的服务可以服务? 多少个并发请求,它允许运行? 即使你的带宽可以是一个瓶颈。

如果你在谈论一种刮 - 该服务可以要求一定的限制后阻止你,所以你需要使用代理服务器或多个IP绑定。

至于我,在大多数情况下,我可以运行Python脚本在我的笔记本50-300并发请求。



Answer 3:

听起来像一个优秀的应用扭曲 。 下面是一些Web相关的例子 ,包括如何下载网页 。 这里是一个相关的问题与扭曲的数据库连接 。

需要注意的是扭曲的依赖于线程同时做多件事情。 相反,它需要一个合作的多任务处理方式---你的主要脚本启动反应器和反应器调用您设置的功能。 你的函数必须返回控制反应器的反应器之前,可以继续工作。



文章来源: Ideal method for sending multiple HTTP requests over Python? [duplicate]