Python请求在上传请求正文时读取响应

标签 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。

我的问题是,直到整个文件上传后我才得到“响应”。关于如何克服这个问题的任何想法。

最佳答案

您今天无法通过请求来完成此任务。请求(以及底层库,包括 httplib/http.client [取决于您的 Python 版本])都会在开始读取响应之前发送所有数据。

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

关于Python请求在上传请求正文时读取响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30864360/

相关文章:

python - 即使创建了单独的目录,新的 session 文件也会覆盖旧的 session 文件(Flask)

asp.net - 如何确保上传的文件内容使用后无法恢复?

ios - 用于在 iPhone 上流式传输的 Youtube 协议(protocol)

audio - Phonegap上传的音频文件未在浏览器中播放

python - 如何在一段时间后停止流式传输推文?

python - Protocol buffers,在哪里使用它们?

python - 如何在 Python 3 中获取导入包的位置?

python - TK 图像未出现

javascript - 搜索没有jquery的js图像裁剪插件

ios - 如何使用Alamofire上传多张图片?