我正在尝试使用Wed Mar 20 12:52:50 2019 [21570][1][FATAL] Array
(
[Host] => localhost
[Connection] => keep-alive
[module] => Accounts
[Cache-Control] => no-cache
[oauth_token] => 9efe19d4d2ec3b557b4d0588a3f74d5d3cc0ed46
[platform] => base
[User-Agent] => Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36
[Postman-Token] => 3ddc88e1-e7a8-700f-580b-801da5f0adde
[Accept] => */*
[Accept-Encoding] => gzip, deflate, br
[Accept-Language] => en-US,en;q=0.9
[Cookie] => download_token_base=e790d5a8-17a4-4110-98ab-a6648a0ef385
)
在flask
中实现大文件上传。我有一个将文件流作为 celery任务保存到磁盘的函数,但是,我的实现要求在我的任务函数内部使用celery
上下文。我已经进行了研究,并实现了on this answer所提供的链接上提供的解决方案,但是,这似乎不适用于我的 celery 版本request
这是我在做什么
这是我的任务
4.1.0
这是@task(name="app.save_operation")
def save_operation():
content = request.files["content"]
content.save(
content.filename)
content.stream.close()
return
包装器
@task
这是我要调用此任务的API处理程序函数
def task(**kwargs):
def decorator(func):
@celery_helper.task(**kwargs)
@functools.wraps(func)
def wrapped(*args, **kwargs):
with app.test_request_context():
return func(*args, **kwargs)
return wrapped
return decorator
``
这在理论上应该可以正常工作,但是当我这样做时, celery 抛出一个@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
,这实际上意味着BadRequestKeyError
中引用的request
对象任务未正确传递。我无法弄清楚为什么会这样,而我的研究也遇到了障碍。
我真的希望对此有一些见识。