遇到pip search命令无法使用报错XMLRPC请求失败怎么办?

遇到pip search命令无法使用报错XMLRPC请求失败怎么办?

pip search 命令无法使用了? 目前是的!从2020年12月开始, search功能就开始出现搜索慢和断断续续的失败问题。

原因是search搜索后端服务查询请求量激增(不确定是恶意使用)达到了一定瓶颈,而目前的搜索能力无法满足这样的请求能力,终于导致了search服务不可用。

我猜测:“搜索服务响应时间过长,占用了更多的系统资源,最终拖累了PyPI网站的整个Web服务前端。”

所以,Python才会决定暂停search功能,而随着时间的推移,现有的搜索功能实现只能通过更换一种新的(或者扩展)搜索能力(主机、或者服务架构)以满足search服务,但这不是短时间、或者需要投入很多工作量和资金才能解决。 到了2021年5月问题依然存在,所以做了一个决定永久禁用XMLRPC搜索功能

目前怎么办呢?

是PyPI网站的能力问题也好,还是某些用户的恶意使用搜索功能也罢,事实已经定了,现在要考虑的是以后怎么办?

  1. search功能停止,install还是可以的,所以只要写好了requirements.txt依赖包列表文件,有没有search功能无所谓。
  2. XMLRPC服务停了,但是PyPI网站的search功能还是能用的,写个脚本模拟查询请求仍然可以解决,或者使用别人写好的Shell脚本 pypi-simple-search
  3. 如果你使用Anaconda或者使用conda工具,那么继续使用吧,condasearch功能还是可用的,以后可以替代pip search功能了。

此时某些小白工程师才发现编写requirements.txt文件的重要性了吧。有些经常使用requirements.txt安装依赖包的工程师其实很久都没有发现search功能不能用(^_^),对他们来说,这功能辅助偶尔用用罢了。

报错信息的情况

你是不是遇到了这样的错误,别慌张,这不是你本地命令问题。

ERROR: XMLRPC request failed [code: -32500]
RuntimeError: PyPI's XMLRPC API is currently disabled due to unmanageable load and will be deprecated in the near future. See https://status.python.org/ for more information.

或者是这样的错误:

ERROR: Exception:
Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/pip/_internal/cli/base_command.py", line 228, in _main
    status = self.run(options, args)
  File "/usr/lib/python3.9/site-packages/pip/_internal/commands/search.py", line 60, in run
    pypi_hits = self.search(query, options)
  File "/usr/lib/python3.9/site-packages/pip/_internal/commands/search.py", line 80, in search
    hits = pypi.search({'name': query, 'summary': query}, 'or')
  File "/usr/lib64/python3.9/xmlrpc/client.py", line 1116, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib64/python3.9/xmlrpc/client.py", line 1456, in __request
    response = self.__transport.request(
  File "/usr/lib/python3.9/site-packages/pip/_internal/network/xmlrpc.py", line 45, in request
    return self.parse_response(response.raw)
  File "/usr/lib64/python3.9/xmlrpc/client.py", line 1348, in parse_response
    return u.close()
  File "/usr/lib64/python3.9/xmlrpc/client.py", line 662, in close
    raise Fault(**self._stack[0])
xmlrpc.client.Fault: <Fault -32500: "RuntimeError: PyPI's XMLRPC API is currently disabled due to unmanageable load and will be deprecated in the near future. See https://status.python.org/ for more information.">

Python官方的事故调查记录

更新- 我们现在距离禁用 XMLRPC 搜索端点的决定已过去 100 天。

到端点的流量没有以任何实质性的方式消退,我们也没有收到任何一方继续每小时发出数十万次搜索呼叫的消息。

因此,将永久禁用 XMLRPC 搜索。

Mar的2414:22 UTC

更新- 由于持续的请求量,XMLRPC 搜索端点保持禁用状态。截至本次更新,从滥用 IP 到端点的入站流量没有减少,我们无法重新启用端点,因为它会立即导致 PyPI 服务再次降级。

年1月12个16:04 UTC
更新- 我们将继续监控任何进一步的问题。

年12月28日13:51 UTC
更新- 由于持续的请求量,XMLRPC 搜索端点保持禁用状态。截至本次更新,从滥用 IP 到端点的入站流量没有减少,我们无法重新启用端点,因为它会立即导致 PyPI 服务再次降级。

年12月28日13:50 UTC
更新- 由于持续的请求量,XMLRPC 搜索端点仍处于禁用状态。截至本次更新,从滥用 IP 到端点的入站流量没有减少,我们无法重新启用端点,因为它会立即导致 PyPI 服务再次降级。我们正在与 IP 所有者的滥用联系人合作,并尝试与通过其他渠道淹没我们的任何工具的维护者联系。

年12月2314:54 UTC
更新- 由于持续的请求量,XMLRPC 搜索端点仍处于禁用状态。截至本次更新,从滥用 IP 到端点的入站流量没有减少,我们无法重新启用端点,因为它会立即导致 PyPI 服务再次降级。我们正在与 IP 所有者的滥用联系人合作,并尝试与通过其他渠道淹没我们的任何工具的维护者联系。

年12月1520:59 UTC
监控- 随着 XMLRPC 的暂时禁用,我们希望给我们造成麻烦的大众消费者能够与我们取得联系。由于大量的 IP,我们无法在不冒更严重中断的风险的情况下进行更有针对性的阻止,并且无法在可操作的时间范围内从他们的滥用联系人或直接外展收到回复。

年12月1417:46 UTC
更新- 由于入站 XMLRPC 搜索请求的激增(并不断增长),我们将暂时禁用 XMLRPC 搜索端点,直至另行通知。

年12月1417:30 UTC
已确定- 我们已经确定问题在于我们的 XLMRPC 搜索端点的数量过多,该端点为“pip search”等工具提供支持。我们正在努力识别模式并禁止滥用客户端以保持服务健康。

年12月1415:09 UTC
正在调查- PyPI 的搜索后端出现中断,导致后端超时和失败,从而导致 Web 应用程序的服务降级。上传和安装目前不受影响,但通过 Web 应用程序登录的操作和搜索以及通过 XMLRPC 的 API 访问目前正在经历部分中断。

年12月1409:41 UTC
转载本文时请注明出处及本文链接地址遇到pip search命令无法使用报错XMLRPC请求失败怎么办?

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注