返回数据的芹菜任务:做错了或做得对吗?

时间:2012-06-07 17:55:38

标签: python celery celeryd celery-task

我正在学习使用芹菜。我有一个函数(在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”放入任务本身并返回。

以前做过此事的人的芹菜方式是什么?或者只是一些以前有过调优芹菜的人的反馈。

1 个答案:

答案 0 :(得分:0)

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