问题标签 [grequests]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用 grequests 发布和获取
我正在使用 grequests 更快地浏览网站。但是,我还需要登录该网站。
之前(仅使用请求)我可以这样做:
headers
我的在哪里User-Agent
。
使用grequests
我只能headers
通过这样做:
反正有没有同时做一个POST
,所以我可以登录?登录 URL 与我要报废的 URL 不同。
python - 如何捕获 503 错误并重试请求
我过去grequests
经常拨打大约 10,000 次电话,但其中一些电话返回为503
. 如果我不一次将所有 10,000 个呼叫排队,这个问题就会消失。将其分成 1000 个组似乎可以解决问题。但是我想知道是否有办法捕获此503
错误并重试request
.
这就是我调用和组合线程的方式:
我知道这真的很模糊,但我什至不知道这是否可以使用grequests
.
我naivley试过
但这并不能减慢它的速度。
python - 在 Python 中对 grequest 应用重试
我有一个 URL 列表,我想使用 Python 的grequests
模块对其进行 HTTP Get 请求。
某些 URL 不返回 OK 状态,在这种情况下,我想重试该 URL。
我可以使用一个队列来执行此操作,该队列存储所有尚未尝试过的 URL,或者在以前的尝试中未返回 200 的 URL,并继续批量发送请求。不过,我正在为此寻找一个更清洁/更“Pythonic”的实现。
我之前使用过该retrying
模块进行重试,它非常整洁。我想知道是否有一些类似的、简洁的实现来重试 grequests 发送的请求。
python - 多个http get和post
任务是:
我目前是通过 requests 库来做这个的,但是一个一个做这个需要很多时间,最多可以达到 20000 个。
我尝试过multiprocessing
,但由于某种原因,它在发送 5000-10000 次获取和发布后挂起。
我读到了 grequest,但它在那里说
Order of these responses does not map to the order of the requests you send out.
。我需要订单,因为我必须根据我发送的 get 修改每个回复。
这里最好的选择是什么?我也读过,threading,tornado
但是因为我把我的第一种方法搞砸了,multiprocessing
我想在再次开始之前确定一下
python - 尽管尺寸很大,但对于一长串 url 的请求失败
我有一个形式的任务:
我曾经grequests
做到这一点。55 urls
现在它工作得很好。然后我尝试了。34000
它失败了
Connection aborted.', gaierror(8, 'nodename nor servname provided, or not known')) for request <grequests.AsyncRequest object at 0x1bda93610>
。
然后我尝试了size
参数 ingrequests.map
并尝试了size
= 64
。得到了同样的错误。现在还有什么我可以做的,或者我需要使用其他东西并且grequests
不适合这项任务。
python - requests + grequests:“连接池已满,正在丢弃连接:”警告是否相关?
我在 localhost 上托管一个服务器,我想异步触发数百个 GET 请求。为此,我正在使用grequests
. 一切似乎都很好,但我反复收到警告:
警告:requests.packages.urllib3.connectionpool:连接池已满,丢弃连接:date.jsontest.com
Session()
搜索显示了在创建requests
例如here时如何避免完整池问题。但是,有几件事:
- 即使我不采取任何措施来避免警告,我似乎始终能得到预期的结果。如果我确实使用了解决方法,任何超过数量的请求
pool_maxsize
都会发出警告。 - 如果请求数超过池大小,链接的解决方法仍会导致警告。我认为会有某种节流来防止在任何时候超过池大小
- 我似乎找不到禁用警告的方法。
requests.packages.urllib3.disable_warnings()
似乎什么也没做。
所以我的问题是:
- 这个警告实际上是什么意思?我的解释是,它只是放弃了触发请求,但似乎并非如此。
- 这个警告是否真的与
grequests
图书馆相关,特别是当我采取措施限制池大小时?我是否会在我的测试中引发意外的行为并侥幸获得预期的结果? - 有没有办法禁用它?
一些要测试的代码:
python - 如何在 AWS Lambda 上使用 Grequests?
我有一个Lambda
函数,Python
它使用了几个具有二进制依赖关系的库:numpy
、scipy
、Pillow
等。过去,我已经成功地将它们编译到Amazon Linux
& 部署到Lambda
.
不过,我最近添加Grequest
到一堆依赖项中,它抛出的错误似乎与Grequest
. 关于这个话题的其他问题导致了死胡同,所以把我的帽子放在戒指上。
第一个错误是简单的Grequests requires gevent
或类似的。为了解决这个问题,我尝试pip install gevent --no-binary :all:
在一个Amazon Linux
实例上运行,将它与我的代码捆绑并上传到 Lambda。这对错误没有影响。
src
然后我从repo下载并gevent
使用它编译它make
(repo 的 README 中的命令引发了我没有记录的错误)。这产生了一个egg
文件,我将其转换为一个whl
文件并运行pip install gevent.whl -t .
。
我将生成的代码与我的捆绑在一起lambda.zip
并上传。这导致了一个新错误:
module initialization error: lib/libptf77blas.a.gz: invalid ELF header
libptf77blas.a.gz
是lib
我的文件夹中的一个文件lambda.zip
。该文件夹包含几个文件.so
,.a
我在 AWS Linux 上组装、、、等时构建了numpy
这些scipy
文件Pillow
。
据我所知,这是对numpy
. 我不明白的部分是:我使用的函数numpy
(并且libptf77blas.a.gz
在添加grequests
.
所以我假设一些关于编译的东西gevent
破坏了我的其他binary
依赖库的依赖关系,或者gevent
它本身需要libptf77blas.a.gz
并且对它发现的东西感到困惑。
我ldd
在.so
文件上运行了gevent
依赖,但没有引用libptf77blas.a.gz
. 但是,我是一个编译新手,所以这几乎没有定论。
我想实现并行上传Grequests
,但不清楚如何解决这个问题,或者使用哪些替代库(我通常写 JS,所以 Python 是第二语言)。
python - grequests 库中的 imap 与 map
据我所知,和之间的区别在于map
等待imap
所有map
请求完成,然后返回有序数据。而imap
立即返回数据并减少订购量。
当我使用:
所有请求完成后立即使用钩子,并调用回调函数。
当我使用:
然后不会发送一个请求。
根据文档 map 和 imap 具有完全相同的 API。
这是预期的行为吗?我不应该在 imap 中使用钩子吗?我正在使用 Python 3.5。
python - Python 请求问题
我正在尝试使用 Python 的 grequests 库同时调用多个 URL。问题是我不太了解 grequests 的逻辑。以下是我的代码的示例(编辑版本):-
我respArray
返回从 URL 返回的每个单独的数组。当我运行该数组时,就好像每个数组都在自己的循环中运行,而不是同时运行。我不知道如何让它同时运行,以便获得更快的结果。
python - 防止在python异步http请求中下载响应正文
我想“ping”一个服务器,检查标头响应以查看链接是否损坏,如果没有损坏,则实际下载响应正文。
传统上,使用模块的同步方法requests
,您可以发送get
带有参数的请求stream = True
,并在响应正文下载之前捕获标头,在出现错误(例如未找到)的情况下决定中止连接。
我的问题是,使用异步库执行此操作,grequests
或者requests-futures
对于我减少的知识库来说已成为不可能。
我已经尝试将流参数设置为 truerequest-futures
但没有用,它仍然会下载响应正文,而不会让我在获得响应标头后立即进行干预。即使是这样,我也不确定如何进行。
这是我尝试过的:
测试.py
调试后,我发现它以任何一种方式下载响应正文。
我将不胜感激最初问题的任何解决方案,无论它是否符合我的逻辑。