1

我试图更准确地了解 Http 连接如何与 Flask 一起使用,因此我尝试编写一个非常简单的应用程序以及另一个与 requests 和 requests-toolbelt 的简单连接:

app = Flask('file-streamer')

@app.route("/uploadDumb", methods=["POST"])
def upload_dumb():
    print("Hello")
    return Response(status=200)

所以基本上这个服务器应该只接收一个请求并返回一个响应。

然后我实现了一段简单的代码,它使用 toolbelt 发送请求:

import requests 
from requests_toolbelt.multipart import encoder

values = {"file": ("test.zip", open("test.zip", "rb"), "application/zip"), "test": "hello"}

m = encoder.MultipartEncoder(fields=values)

r = requests.post(url="http://localhost:5000/uploadDumb", data=m, headers={"Content-Type": m.content_type})

我发送的文件是一个非常大的文件,我想通过流式传输上传。问题是,我希望 Flask 服务器等待整个文件被发送(即使文件无用),然后返回响应,但这不是正在发生的事情。实际上,Flask 在发送过程的最开始就做出响应,返回 200 响应,这会导致“请求”端以“BrokenPipeError”结束。

有人可以向我解释那里发生了什么吗?

4

0 回答 0