我正在使用 stream 请求来执行远程超大型CSV的'GET'下载,然后使用response.iter_content()
分块响应。这一直适用于多个数据提供商。
但是,对于一个远程数据提供商,在使用response.iter_content()
时,偶尔会收到ChunkedEncodingError
,具体为:
ChunkedEncodingError: (
ProtocolError(
'Connection broken: IncompleteRead(921 bytes read, 103 more expected)',
IncompleteRead(921 bytes read, 103 more expected)),
)
以下是Python 3
代码,我想知道解决此分块异常问题的替代方法:
tmp_csv_chunk_sum = 0
with open(
file=tmp_csv_file_path,
mode='wb',
encoding=encoding_write
) as csv_file_wb:
try:
for chunk in response.iter_content(chunk_size=8192):
if not chunk:
break
tmp_csv_chunk_sum += 8192
csv_file_wb.write(chunk)
csv_file_wb.flush()
os.fsync(csv_file_wb.fileno())
except Exception as ex:
self.logger.error(
"Request CSV Download: Exception",
extra={
'error_details': str(ex),
'chunk_total_sum': tmp_csv_chunk_sum
}
)
raise
我非常感谢您的帮助,谢谢