从请求流创建块生成器-Python Flask

时间:2019-04-06 22:16:08

标签: python flask flask-restful

我正在服务器上运行Flask-restful的Python和Flask。我想处理流数据上传到我的服务器。我已经设置了一个端点,如下所示:

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]}

在当前形式下,请求流在第一次调用时就耗尽了。

理想情况下,我想向我的每个API接口传递一个chunk generator

目标是从Flask中的请求流创建块生成器函数。此外,我计划从单独的线程运行API调用。

在这方面的任何帮助将不胜感激。谢谢!

0 个答案:

没有答案