Я пытаюсь более точно понять, как соединения Http работают с Flask, поэтому я попытался написать очень простое приложение и другое простое соединение с запросами и запросами 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».
Может ли кто-нибудь объяснить мне, что там происходит?