Python 3:请求response.iter_content:ChunkedEncodingError

时间:2016-05-26 17:25:21

标签: python-3.x python-requests chunking

我正在使用 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

我非常感谢您的帮助,谢谢

0 个答案:

没有答案