python3 - 如何克服 python 请求的最大 url 限制

Lud*_*udo 0 python json web.py python-3.x python-requests

我有两个 python 应用程序使用 web.py 在不同的端口上运行。我正在尝试将 30,000-40,000 个字符范围内的 JSON 字符串从一个应用程序发送到另一个应用程序。JSON 包含生成 powerpoint 报告所需的所有信息。我尝试使用以下请求启用此通信:

import requests
template = <long JSON string>     
url = 'http://0.0.0.0:6060/api/getPpt?template={}'.format(template)
resp= requests.get(url).text
Run Code Online (Sandbox Code Playgroud)

我注意到在接收端,json 已被截断为 803 个字符长,因此当它解码 JSON 时,我得到:

json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 780 (char 779)
Run Code Online (Sandbox Code Playgroud)

我认为这必须限制 URL 请求的长度,来自 web.py 或请求,或者这是标准化的事情。有没有办法解决这个问题,或者我需要找到另一种方式来启用这两个 python 应用程序之间的通信。如果无法通过 http 发送这么长的 JSON,请您提出替代方案。谢谢!

Mar*_*ers 5

不要将那么多数据放入一个 URL 中。大多数浏览器将 URL(包括查询字符串)的总长度限制在 2000 个字符左右,服务器限制在 8000 个左右。

请参阅不同浏览器中 URL 的最大长度是多少?,引用了 HTTP/1.1 标准,RFC7230

在实践中发现了对请求行长度的各种特别限制。建议所有 HTTP 发送方和接收方至少支持 8000 个八位字节的请求行长度。

您需要在请求正文中发送那么多数据。使用 POST 或 PUT 作为方法。

requests库本身并不放在URL长度的任何限制; 它将 URL 发送到服务器而不截断它。是你的服务器在这里截断了它,而不是给你一个414 URI Too Long状态代码。