如何用动态输入实用主义地调度芹菜任务?

2024-04-23 17:10:00 发布

您现在位置:Python中文网/ 问答频道 /正文

在这种情况下,我需要实际地调度一个任务,而任务定义在每次需要执行时都需要特定的输入参数。考虑以下任务函数:

@task
def add_numbers(a, b):
   sum = a + b
   return sum

现在,如果我需要在两个不同的时间实例上运行上述任务,并使用不同的输入参数,例如T1->;add_numbers(4,5)和T2->;add_numbers(2,2),我该怎么做呢。谢谢你的帮助。在

环境:Django 1.4,芹菜3.0


Tags: 实例函数gtaddtask参数return定义
2条回答

有关如何在指定时间间隔内使用参数调用任务的示例,请参阅有关定期任务的Celery文档。http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#entries

在您的示例中,可以使用类似于:

from celery.schedules import crontab

CELERYBEAT_SCHEDULE = {
    'T1': {
        'task': 'tasks.add_numbers',
        'schedule': crontab(hour=7, minute=30, day_of_week=1),,
        'args': (4, 5)
    },
    'T2': {
        'task': 'tasks.add_numbers',
        'schedule': crontab(hour=16, minute=0),,
        'args': (2, 2)
    },
}

我也遇到了这个问题,我想还有别的办法可以帮你。 @narced133的答案只有在参数的变化有限的情况下才有效,那么如果我们有成千上万种参数呢?在

解决方案: 重构您的celery task以接受函数作为param,该函数将生成或获取celery task:add_numbers的真正参数的参数。在

相关问题 更多 >