0

我的英语不好,所以如果你看不懂我的句子,请给我任何意见。

我在 django 上使用 celery 进行定期任务。

CELERYBEAT_SCHEDULE = {
    'send_sms_one_pm': {
        'task': 'tasks.send_one_pm',
        'schedule': crontab(minute=0, hour=13),
    },
    'send_sms_ten_am': {
        'task': 'tasks.send_ten_am',
        'schedule': crontab(minute=0, hour=10),
    },
    'night_proposal_noti': {
        'task': 'tasks.night_proposal_noti',
        'schedule': crontab(minute=0, hour=10)
    },
}

这是我的芹菜时间表,我将 redis 用于芹菜队列。

问题是,当最大的任务开始时,其他任务被搁置。最大的任务会处理 10 小时,其他任务会在 10 小时后开始。

我的任务看起来像

@app.task(name='tasks.send_one_pm')
def send_one_pm():

我发现,芹菜给了我 task.apply_asnyc(),但找不到可以在 asnyc 上工作的周期性任务。

所以,我想知道 celery 的周期性任务可以作为 asnyc 任务工作。我的芹菜工人是 8 名工人。

4

1 回答 1

0

CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'在设置中也分配了吗?如果你想让一个任务在另一个任务之后开始运行,你应该使用apply_asnyc()with link kwargs,它看起来像这样:

res=[signature(your_task.name, args=(...), options=kwargs, immutable=True),..]
task.apply_async((args), link=res)
于 2016-07-12T07:51:01.667 回答