1

我正在学习使用芹菜。我有一个函数(在 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% 确定这是正确和最好的,但现在对我有用。似乎结果/返回的行可能是一个“返回 = run_task”,其中运行任务执行任务并等待。

我正在考虑重构方向——a)将这两行(结果/返回)捆绑在一个运行任务并调用结果的函数中,或者 b)将“AsyncResult”放入任务本身并返回。

以前做过这件事的人的芹菜方法是什么?或者只是来自以前微调过芹菜的人的一些反馈。

4

1 回答 1

0

仅当您打算在 Web 应用程序的其他地方重用此代码时,重构此代码才有意义。如果只是从这里调用它们,则无需将这几行放入新函数中。但是,如果您打算重用代码,那么最好有一个函数来启动该任务并返回响应。我真的不认为这是关于 Celery 的问题,因为这些重构原则适用于任何代码。

于 2012-06-07T18:27:26.223 回答