Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python请求同时下载和上载文件_Python_Http_Python Requests - Fatal编程技术网

如何使用Python请求同时下载和上载文件

如何使用Python请求同时下载和上载文件,python,http,python-requests,Python,Http,Python Requests,我正在尝试从nginx服务器流式下载并同时上载它。下载是使用请求流实现的;上传使用分块-目的是能够在下载/上传发生时报告进度 到目前为止,我得到的总体代码如下: with closing(requests.get(vmdk_url, stream=True, timeout=60 + 1)) as vmdk_request: chunk_in_bytes = 50 * 1024 * 1024 total_length = int(vmdk_request.headers['Con

我正在尝试从nginx服务器流式下载并同时上载它。下载是使用请求流实现的;上传使用分块-目的是能够在下载/上传发生时报告进度

到目前为止,我得到的总体代码如下:

with closing(requests.get(vmdk_url, stream=True, timeout=60 + 1)) as vmdk_request:
    chunk_in_bytes = 50 * 1024 * 1024
    total_length = int(vmdk_request.headers['Content-Length'])

    def vmdk_streamer():
        sent_length = 0
        for data in vmdk_request.iter_content(chunk_in_bytes):
            sent_length += len(data)
            progress_in_percent = (sent_length / (total_length * 1.0)) * 100

            lease.HttpNfcLeaseProgress(int(progress_in_percent))
            yield data

    result = requests.post(
        upload_url, data=vmdk_streamer(), verify=False,
        headers={'Content-Type': 'application/x-vnd.vmware-streamVmdk'})
在特定的环境中,这是很好的。我把它放到另一个(如果你感兴趣的话,一个Cloudify插件)中,当它达到60秒左右时,它无法读取数据

因此,我正在寻找一种替代方法——或者更简单地说是更好的——来流式传输下载/上传,因为我60多岁的问题可能围绕着我是如何流式传输的(我希望如此)。最好是使用
请求
,但实际上我会使用任何小于等于原始
urlib3
的东西