【发布时间】:2018-11-13 09:49:55
【问题描述】:
在我的tasks.py中,我有两个芹菜任务A和B。任务B将用户ID作为参数。任务 A 收集所有用户 id 并创建一组具有每个用户 id 的任务 B。
@app.task
def A():
user_ids = get_all_user_ids()
job = group(B.s(uid) for uid in user_ids)
job()
@app.task
def B(user_id):
#some heavy processing
在这种情况下,我是直接调用 celery 任务组。问题在于,有时它会在任务 A 中给出 SoftTimeLimitExceeded 异常。我的问题是,如果我调用不直接调用作业,而是使用 apply_async 调用它,这会解决问题吗?另外,直接调用任务组与使用 apply_async 调用它的确切区别是什么?
【问题讨论】: