Создание генератора фрагментов из потока запросов — Python Flask

#python #flask #flask-restful

#python #flask #flask-restful

Вопрос:

Я запускаю Python и Flask с помощью Flask-restful на своем сервере. Я хочу обрабатывать потоковую загрузку данных на мой сервер. Я настроил конечную точку следующим образом:

 class ChunkProcessor(Resource):
    j = 0
    def chunk_fun(self):
        chunk_size = int(request.headers.get("x-chunk-size"))
        chunk = request.stream.read(chunk_size)
        self.j = 0
        while chunk:
            print("got chunk")
            yield chunk
            self.j  = 1
            chunk = request.stream.read(chunk_size)
    def post(self):
        for i in self.chunk_fun():
            pass
        return {"success": "TRUE", "n_chunks": self.j}
  

В этой форме он работает нормально.

Но теперь я хочу отправить эти фрагменты нескольким адресатам. т.Е. Следующим образом:

 class ChunkProcessor(Resource):
    def chunk_fun(self):
        chunk_size = int(request.headers.get("x-chunk-size"))
        chunk = request.stream.read(chunk_size)
        while chunk:
            yield chunk
            chunk = request.stream.read(chunk_size)
    def post(self):
        res1 = MyAPI1().call(self.chunk_fun)
        res2 = MyAPI2().call(self.chunk_fun)
        return {"success": "TRUE", "output": [res1, res2]}
  

В текущей форме поток запросов исчерпывается первым вызовом.

В идеале я хотел бы передать chunk generator каждому из моих интерфейсов API.

Цель состоит в том, чтобы создать функцию генератора фрагментов из потока запросов в Flask. Кроме того, я планирую запускать свои вызовы API из отдельных потоков.

Любая помощь в этом отношении будет высоко оценена. Спасибо!