芹菜,用倒计时调用延迟
Celery, calling delay with countdown
我正在尝试了解芹菜的工作原理
在我的 tasks.py
文件中的 django 应用程序中,我创建了一个任务:
@celery.shared_task(default_retry_delay=2 * 60, max_retries=2)
def my_task(param1, param2):
# There are some operations
我使用以下代码调用此任务:
my_task.delay(param1, param2)
在这个 my_task
中有一个条件应该再次开始这个任务 但是在延迟一分钟后
我发现有一些 ETA and countdown 的任务,但他们的例子只有 apply_async
是否可以为 delay
使用某种倒计时?
来自basic part of celery Calling documentation
delay(*args, **kwargs)
Shortcut to send a task message, but doesn’t support execution
options.
So delay is clearly convenient, but if you want to set additional
execution options you have to use apply_async.
如文档所述 delay
不能与其他选项集一起使用,因此您应该将调用转换为 apply_async
如果你想添加执行选项,文档建议你使用签名。例如:
my_task.s(arg1, arg2).apply_async(countdown=60)
只是添加到 iklinac 的回答中。这就是使用 apply_async()
调用任务的方式
my_task.apply_async(args=(param1, param2), countdown=60)
或
my_task.apply_async(kwargs={'param1':param1, 'param2':param2}, countdown=60)
如果您使用 Flower 等工具进行监控,第二个选项将真正派上用场。您可以查看 Celery tasks best practices 页面以获取其他提示。
我正在尝试了解芹菜的工作原理
在我的 tasks.py
文件中的 django 应用程序中,我创建了一个任务:
@celery.shared_task(default_retry_delay=2 * 60, max_retries=2)
def my_task(param1, param2):
# There are some operations
我使用以下代码调用此任务:
my_task.delay(param1, param2)
在这个 my_task
中有一个条件应该再次开始这个任务 但是在延迟一分钟后
我发现有一些 ETA and countdown 的任务,但他们的例子只有 apply_async
是否可以为 delay
使用某种倒计时?
来自basic part of celery Calling documentation
delay(*args, **kwargs)
Shortcut to send a task message, but doesn’t support execution options.
So delay is clearly convenient, but if you want to set additional execution options you have to use apply_async.
如文档所述 delay
不能与其他选项集一起使用,因此您应该将调用转换为 apply_async
如果你想添加执行选项,文档建议你使用签名。例如:
my_task.s(arg1, arg2).apply_async(countdown=60)
只是添加到 iklinac 的回答中。这就是使用 apply_async()
调用任务的方式my_task.apply_async(args=(param1, param2), countdown=60)
或
my_task.apply_async(kwargs={'param1':param1, 'param2':param2}, countdown=60)
如果您使用 Flower 等工具进行监控,第二个选项将真正派上用场。您可以查看 Celery tasks best practices 页面以获取其他提示。