你能在 apply_sync 上立即强制 celery 计划任务 运行 吗?
Can you force a celery scheduled task to run immediately on apply_sync?
我在 Celery 上有一个计划任务,每三分钟 运行s。但是,在某些情况下,我希望在高优先级任务进入时立即 运行 任务。
例如您计划每 3 分钟发送一次批量电子邮件。但是,当收到高优先级电子邮件时,我想立即调用 send_email.apply_async()
和 运行 并仅发送该特定的高优先级电子邮件并退出。
我注意到,当我调用 send_email.apply_async(kwargs=hig_priority_email_details)
时,我注意到它没有立即执行,而是在 3 分钟后发送到 运行。我可能缺少什么?
计划任务:
'engine.app_engine_v1_0.send_email.run-every-180-seconds':
{'task': 'engine.app_engine_v1_0.send_email',
'schedule': timedelta(seconds=180),
'kwargs': {'no_of_emails':60000, 'lock_expire':5, 'skip_lock':False}
},
我有一段时间没有运行 Celery 提供的.delay()
方法,以至于我忘了它。它在 Celery Basics guide 中进行了解释。发送任务消息的快捷方式,但不支持执行选项
所以在这种情况下,我需要做的就是调用 send_email.delay(**high_priority_email_details)
,它会立即 运行。
我在 Celery 上有一个计划任务,每三分钟 运行s。但是,在某些情况下,我希望在高优先级任务进入时立即 运行 任务。
例如您计划每 3 分钟发送一次批量电子邮件。但是,当收到高优先级电子邮件时,我想立即调用 send_email.apply_async()
和 运行 并仅发送该特定的高优先级电子邮件并退出。
我注意到,当我调用 send_email.apply_async(kwargs=hig_priority_email_details)
时,我注意到它没有立即执行,而是在 3 分钟后发送到 运行。我可能缺少什么?
计划任务:
'engine.app_engine_v1_0.send_email.run-every-180-seconds':
{'task': 'engine.app_engine_v1_0.send_email',
'schedule': timedelta(seconds=180),
'kwargs': {'no_of_emails':60000, 'lock_expire':5, 'skip_lock':False}
},
我有一段时间没有运行 Celery 提供的.delay()
方法,以至于我忘了它。它在 Celery Basics guide 中进行了解释。发送任务消息的快捷方式,但不支持执行选项
所以在这种情况下,我需要做的就是调用 send_email.delay(**high_priority_email_details)
,它会立即 运行。