使用Flask和芹菜上传大文件

2024-04-25 03:37:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用celeryflask中实现一个大文件上传。我有一个函数,它将文件流保存为一个芹菜任务但是,我的实现需要在我的任务函数中使用request上下文。我已经完成了我的研究并实现了在给定的链接上提供的解决方案on this answer但是,这似乎不适用于我的版本的芹菜,它是{}

这就是我要做的

这是我的任务

@task(name="app.save_operation")
def save_operation():
    content = request.files["content"]
    content.save(
        content.filename)
    content.stream.close()
    return

这是@task包装

^{pr2}$

这是API处理函数,我在这里调用这个任务

@app.route("/upload", methods=["GET", "POST"])
def upload():
    if (request.method == "POST"):
        filename = request.files["content"].filename
        task_id = save_operation.delay()
        return "upload started for "+filename

在`` 这在理论上应该可以正常工作,但是,当我这样做时,celery抛出一个BadRequestKeyError,这实际上意味着在save_operation()任务中引用的request对象没有被正确传递。我不知道为什么会发生这种情况,我的研究遇到了障碍。在

我真的很想了解一下。在


Tags: 文件函数apptaskreturnrequestsavedef