Python 如何批量http请求gevent?
我从gevent文档中找到了这个示例,但我想控制gevent执行的并发请求:Python 如何批量http请求gevent?,python,gevent,Python,Gevent,我从gevent文档中找到了这个示例,但我想控制gevent执行的并发请求: import gevent import urllib2 from gevent import monkey monkey.patch_all() urls = ['http://www.google.com', 'http://www.example.com', 'http://www.python.org'] def print_head(url): print 'Starting %s' %
import gevent
import urllib2
from gevent import monkey
monkey.patch_all()
urls = ['http://www.google.com', 'http://www.example.com', 'http://www.python.org']
def print_head(url):
print 'Starting %s' % url
data = urllib2.urlopen(url).read()
print '%s: %s bytes: %r' % (url, len(data), data[:50])
jobs = [gevent.spawn(print_head, url) for url in urls]
gevent.joinall(jobs, timeout=2)
例如,如果我要请求5000个URL,如何将连接限制为50个?您需要使用
gevent.pool
。通常是这样的:
# 50 is your pool size
pool = gevent.pool.Pool(50)
for url in urls:
pool.spawn(print_head, url)
pool.join(timeout=2)
您直接在固定大小的池中生成,然后等待池执行请求。但是,如果有5000个请求,2的超时时间可能会有点短。您需要使用
gevent.pool
。通常是这样的:
# 50 is your pool size
pool = gevent.pool.Pool(50)
for url in urls:
pool.spawn(print_head, url)
pool.join(timeout=2)
您直接在固定大小的池中生成,然后等待池执行请求。如果您有5000个请求,那么2的超时时间可能会有点短。不定义超时是否安全?我真的不知道。可能不会。不定义超时安全吗?我真的不知道。可能不会。