2024-04-23 17:10:00 发布
网友
在这种情况下,我需要实际地调度一个任务,而任务定义在每次需要执行时都需要特定的输入参数。考虑以下任务函数:
@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
有关如何在指定时间间隔内使用参数调用任务的示例,请参阅有关定期任务的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的真正参数的参数。在
celery task
add_numbers
有关如何在指定时间间隔内使用参数调用任务的示例,请参阅有关定期任务的Celery文档。http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#entries
在您的示例中,可以使用类似于:
我也遇到了这个问题,我想还有别的办法可以帮你。 @narced133的答案只有在参数的变化有限的情况下才有效,那么如果我们有成千上万种参数呢?在
解决方案: 重构您的
celery task
以接受函数作为param,该函数将生成或获取celery task
:add_numbers
的真正参数的参数。在相关问题 更多 >
编程相关推荐