我正在学习使用芹菜。我有一个函数(在Flask应用程序中),与我到目前为止学到的有点伪代码有关:
def do_a_task_route():
try:
result = a_celery_task.apply_async(args=[request_data])
returned = a_celery_task.AsyncResult(result.task_id).get(timeout = 2.0)
return jsonify(response = returned['response'])
except:
return jsonify(response = "some big problem")
我不是100%肯定这是对的和最好的,但现在对我有用。似乎结果/返回的行可能是一个“returned = run_task”,其中运行任务执行任务并等待。
我正在考虑重构方向 - a)将这两行(结果/返回)捆绑在一个运行任务并调用结果的函数中,或者b)将“AsyncResult”放入任务本身并返回。
以前做过此事的人的芹菜方式是什么?或者只是一些以前有过调优芹菜的人的反馈。
答案 0 :(得分:0)
如果您要在Web应用程序的其他位置重用此代码,则重构此代码才有意义。如果只是从这里调用它们,就没有必要将这几行放在新函数中。但是如果您打算重用代码,那么最好有一个函数来启动该任务并返回响应。我并不认为这是关于Celery的问题,因为这些重构原则适用于任何代码。