gpt4 book ai didi

python - 使用 Python 时的 BadStatusLine 错误,请求

转载 作者:行者123 更新时间:2023-12-04 17:48:18 26 4
gpt4 key购买 nike

我在 Python 中使用请求,但总是遇到 BadStatusLine 错误。

我的代码如下:

import requests

ip = 'xx.xx.xx.xx'
port = 80
proxies={
'http': 'http://%s:%s'%(ip, port),
'https': 'https://%s:%s'%(ip, port)
}

url = 'https://url'
d = {'active_id': 117}

r=requests.post(url, data=d, proxies=proxies)

异常显示:
File "/root/untitled-5.py", line 13, in <module>
r=requests.post(url, data=d,proxies=proxies, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36'},verify=False)
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 110, in post
return request('post', url, data=data, json=json, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 56, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 488, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 609, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 473, in send
raise ConnectionError(err, request=request)

requests.exceptions.ConnectionError: ('Connection aborted.', BadStatusLine("''",))

我从谷歌找到了一些解决方案。我尝试将最后一行更改为:
1 r=requests.post(url, data=d, proxies=proxies, varify=False)
2 r=requests.post(url, data=d, proxies=proxies, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36'})

但没有人真正有效。我想知道这是为什么以及如何处理。
谢谢

最佳答案

当您的 Python 客户端收到空响应( header /正文)时,您会收到此错误。

顺便说一句,较新的 Python 版本会抛出不同的异常,
当服务器断开连接或网络问题时可能会发生这种情况。

就我而言,我们花了几个星期试图重现它,直到找到主要原因,
我们有一个 Python 应用程序向 Nginx 负载均衡器后面的服务发送请求,

我们发现当客户端超过默认的 Nginx 配置 client_header_timeout/client_body_timeout (60 sec) 时,Nginx 会断开连接,这是 Nginx 将等待来自客户端的额外数据包的时间。

您可以关注此引用 http://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_timeout

当我们的应用程序加载 CPU 处理时,连接已建立,但 header 和请求正文在传输之前有很长的延迟,超过 82 秒。

所以 Nginx 关闭连接并返回重置数据包(记录的 tcpdump 与空主体和 header ),正式它应该返回状态代码 408,这不会发生。

我们通过将两个参数的 client_header_timeout/client_body_timeout 增加到 180 秒来解决它:

server {
..
client_body_timeout 180s;
client_header_timeout 180s;
}

关于python - 使用 Python 时的 BadStatusLine 错误,请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47196100/

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