如何处理Flask中的流式帖子请求?

时间:2017-05-30 22:05:03

标签: python node.js flask stream wsgi

我想通过post. request服务器将一个csv文件从node.js服务器流式传输到Flask应用程序。以下是生成请求的node.js代码:

// node.js route that handles form-based csv file upload
app.post('/route', upload.single('file'), function(req,res) {
    var file = req.file;

    // Streams file to Flask app API      
    fs.createReadStream(file).pipe(
        request.post('http://localhost:5000/upload_dataset',
        function(error, response, body){
          console.log(body);
        })
    );
});

这是Flask请求处理程序:

@app.route('/upload_dataset', methods=['POST'])
def upload_dataset():
    # Read from the request buffer and write it to a new file
    with open(app.root_path + "/tmp/current_dataset", "bw") as f:
        chunk_size = 4096
        while True:
            chunk = request.stream.read(chunk_size)
            if len(chunk) == 0:
                return

            f.write(chunk)

    return 'Some Response'

问题是当路由被命中时,len(chunk)为0,所以没有任何东西被写入。

Q1)请求的传输编码头是“chunked”类型。我听说wsgi没有处理“chunked”请求。这是导致我的问题的原因吗?如果是这样,那么现有实施的替代方案是什么?

Q2)request.stream似乎是空的。请求文件是否可能以请求对象的不同参数结束?如果是这样,哪一个?

否则,如果您发现代码有任何其他问题,请与我们联系。

感谢。

0 个答案:

没有答案