首页 > 解决方案 > 从请求流创建块生成器 - Python Flask

问题描述

我在我的服务器上使用 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]}

在当前形式中,请求流被第一次调用耗尽。

理想情况下,我想将 a 传递chunk generator给我的每个 API 接口。

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

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

标签: pythonflaskflask-restful

解决方案


推荐阅读