gpt4 book ai didi

python - 如何不让 python 请求计算内容长度并使用提供的内容长度?

转载 作者:太空宇宙 更新时间:2023-11-04 10:14:03 28 4
gpt4 key购买 nike

我们有一些自定义模块,我们重新定义了 openseekreadtell 函数来读取根据参数仅是文件的一部分。

但是,此逻辑会覆盖默认的 tell 并且 python requests 正在尝试计算涉及使用 tell 的 content-length (),然后重定向到我们的自定义 tell 函数,并且逻辑存在错误并返回错误值。而且我尝试了一些更改,它会引发错误。

从requests的models.py中发现如下内容:

 def prepare_content_length(self, body):
if hasattr(body, 'seek') and hasattr(body, 'tell'):
body.seek(0, 2)
self.headers['Content-Length'] = builtin_str(body.tell())
body.seek(0, 0)
elif body is not None:
l = super_len(body)
if l:
self.headers['Content-Length'] = builtin_str(l)
elif (self.method not in ('GET', 'HEAD')) and (self.headers.get('Content-Length') is None):
self.headers['Content-Length'] = '0'

目前,我无法弄清楚错误在哪里,并强调要进行更多调查并修复它。除了 python 请求的内容长度计算之外,其他一切都有效。

因此,我创建了自己的定义来查找内容长度。我已将值包含在请求 header 中。但是,请求仍在准备内容长度并抛出错误。

如何限制不准备content-length而使用指定的content-length?

最佳答案

请求可让您在发送前修改请求。参见 Prepared Requests .

例如:

from requests import Request, Session

s = Session()

req = Request('POST', url, data=data, headers=headers)
prepped = req.prepare()

# do something with prepped.headers
prepped.headers['Content-Length'] = your_custom_content_length_calculation()

resp = s.send(prepped, ...)

如果您的 session 有自己的配置(如 cookie 持久性或连接池),那么您应该使用 s.prepare_request(req) 而不是 req.prepare().

关于python - 如何不让 python 请求计算内容长度并使用提供的内容长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36458634/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com