Python在上传请求主体时请求读取响应

时间:2015-06-16 09:58:33

标签: python upload streaming python-requests

我有一项服务需要上传内容,服务器在获取一定数量的数据后开始发送响应,而我的请求正在上传。

headers = {'Content-Type': 'application/octet-stream',  'Expect': '100-continue', 'Connection' :'keep-alive'}
url = "https://MY_API_URL/WEBSERVICE"
response = requests.put(url, headers=headers,stream=True, data=data_gen(fh))
lines = response.iter_lines()
for line in lines:
    print line

data_gen是我的生成器函数,它接受一个非常大的文件的文件句柄,每次迭代产生4KB。

我的问题是我没有得到#34;响应"直到整个文件上传。关于如何克服这一点的任何想法。

1 个答案:

答案 0 :(得分:1)

今天的请求你无法做到这一点。请求(以及基础库,包括httplib / http.client [取决于您的Python版本])都会在开始阅读响应之前发送所有数据。

可能能够处理这个问题的一个库(事实上,我相当肯定这应该是可行的)是treq。它使用Twisted,它可以为您提供确定何时接收数据的方法,因此您需要做的就是注册一个回调以开始访问该数据。