gpt4 book ai didi

python - ProtocolError IncompleteRead 使用请求

转载 作者:可可西里 更新时间:2023-11-01 17:00:32 37 4
gpt4 key购买 nike

当我尝试使用 requests 下载一些图像时遇到了这个奇怪的错误,代码如下,

import requests
import StringIO

r = requests.get(image_url, stream=True)
if r.status_code == 200:
r.raw.decode_content = True
data = StringIO.StringIO(r.raw.data)
# other code to deal with data

然后我得到这个错误,

ProtocolError: ('Connection broken: IncompleteRead(15060 bytes read, 55977 more expected)', IncompleteRead(15060 bytes read, 55977 more expected))

我搜索了类似的问题,并尝试像这样使用 HTTP/1.0 协议(protocol)强制请求,

import httplib
httplib.HTTPConnection._http_vsn = 10
httplib.HTTPConnection._http_vsn_str = 'HTTP/1.0'

然而,服务器只是返回一个403状态码。

顺便说一句,更令人困惑的是 ProtocolError 并非每次都会发生,但有时会发生。

如有任何帮助,我们将不胜感激!

最佳答案

由于您使用的是 stream=True,因此您应该遍历响应并将文件保存在 block 中:

with open('pic1.jpg', 'wb') as handle:
response = requests.get(image_url, stream=True)

if response.ok:
for block in response.iter_content(1024):
if not block:
break
handle.write(block)

请注意,这将保存一个实际文件,但可以修改为使用 StringIO:

with StringIO() as handle:
response = requests.get(image_url, stream=True)

if response.ok:
for block in response.iter_content(1024):
if not block:
break
handle.write(str(block))

关于python - ProtocolError IncompleteRead 使用请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39116123/

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