Python中文
首页
教程
问答
标签
搜索
登录
注册
有多个请求会话的grequests池?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我想对REST webserivce做很多url请求。通常在75-90k之间。但是,我需要限制到Web服务的并发连接数。</p> <p>我开始用下面的方式玩灰球,但很快就开始咀嚼打开的球窝。</p> <pre class="lang-py prettyprint-override"><code>concurrent_limit = 30 urllist = buildUrls() hdrs = {'Host' : 'hostserver'} g_requests = (grequests.get(url, headers=hdrs) for url in urls) g_responses = grequests.map(g_requests, size=concurrent_limit) </code></pre> <p>运行一分钟左右时,出现“已达到最大套接字数”错误。 据我所知,grequests中的每个request s.get调用都使用自己的会话,这意味着为每个请求打开一个新套接字。</p> <p>我在<a href="https://github.com/kennethreitz/grequests/issues/13">github</a>上找到了一个注释,其中提到了如何使grequest使用单个会话。但这似乎有效地将所有请求限制在一个共享池中。这似乎违背了异步http请求的目的。</p> <pre class="lang-py prettyprint-override"><code>s = requests.session() rs = [grequests.get(url, session=s) for url in urls] grequests.map(rs) </code></pre> <p>是否可以使用grequests或gevent.Pool来创建多个会话?</p> <p>换言之:如何通过排队或连接池发出多个并发http请求?</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>rs是一个异步请求列表。每个异步请求都有自己的会话。</p> <pre><code>rs = [grequests.get(url) for url in urls] grequests.map(rs) for ar in rs: print(ar.session.cookies) </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何提高Djang的410误差
6 回答
如何提高doc2vec模型中两个文档(句子)的余弦相似度?
9 回答
如何提高Docker的日志限制?|[输出已剪裁,达到日志限制100KiB/s]
10 回答
如何提高DQN的性能?
10 回答
如何提高EasyOCR的准确性/预测?
8 回答
如何提高Euler#39项目解决方案的效率?
1 回答
如何提高F1成绩进行分类
5 回答
如何提高FaceNet的准确性
9 回答
如何提高fft处理的精度?
5 回答
如何提高Fibonacci实现对大n的精度?
6 回答
如何提高Flask与psycopg2的连接时间
3 回答
如何提高FosterCauer变换的scipy.signal.invres()的数值稳定性?
1 回答
如何提高gae查询的性能?
10 回答
如何提高GANs用于时间序列预测/异常检测的结果
9 回答
如何提高gevent和tornado组合的性能?
5 回答
如何提高googleappengin请求日志的吞吐量
10 回答
如何提高googlevision文本识别的准确性
1 回答
如何提高groupby/apply效率
7 回答
如何提高Gunicorn中的请求率
6 回答
如何提高G中的文件编码转换
9 回答