使用Flask - Python创建数据流

时间:2017-02-25 04:27:24

标签: python rest http flask stream

我正在开发一个服务器,该服务器从Flask的服务器获取日志文件。 这是获取日志的方法的片段:

@app.route('/logs', methods=['POST'])
def logs():
    if request.method == 'POST':
      if request.headers['Content-Type'] == 'application/octet-stream':
            return not_implemented()

        if request.headers['Content-Type'] == 'application/gzip':
            # @TODO: Implement me: I must return a gzip file
            return not_implemented()

我想要的是创建一个流,所以当我使用param POST/logs发出filename=foo.txt请求时,我想返回一个流,所以我可以读取该文件在我的客户端。到目前为止,我试图编写以下方法:

def get_stream(filename):
    """Return the file as a stream of binaries

    :return file: A file pointer for the binary file
    """
    chunk_size = 4096
    try:
        if os.path.exists(filename):
            with open(filename, "bw") as f:
                while True:
                    chunk = f.read(chunk_size)
                    #@TODO: Add the remaining of the implementation
    except Exception, ex:
        log.error(ex)
        return None

我不明白如何使用yield将迭代器返回到get_stream()方法。我知道我必须返回类似的内容:

return Response(get_stream("foo.txt"), mimetype="application/octet-stream")

有人可以帮我吗?

0 个答案:

没有答案