我正在尝试编写一个执行GET请求的函数来从服务器A下载文件,然后立即将文件POST到服务器B.
我正在尝试通过将GET请求的输出流式传输到POST请求的输入来寻找方法。
following article讨论在nodeJS中执行此操作。我如何使用Python请求执行此操作?
答案 0 :(得分:5)
您可以将原始连接对象从流式GET请求传递给POST请求:
r = requests.get(get_url, stream=True)
if r.status_code == 200:
r.raw.decode_content = True # decompress as you read
files = {
'fieldname': ('filename', r.raw, r.headers['Content-Type'])
}
requests.post(post_url, files=files)
默认情况下,使用response.raw
类文件对象不会解码压缩响应(使用GZIP或deflate),但是您可以通过设置decode_content
属性强制它为您解压缩到True
(请求将其设置为False
以控制解码本身。)
我假设该文件是作为multipart/form-data
请求的一部分进行POST的。如果您需要直接发布数据,请改用data=r.raw
。