繁体   English   中英

你能强制芹菜计划任务立即在apply_sync上运行吗?

[英]Can you force a celery scheduled task to run immediately on apply_sync?

我有一个关于Celery的预定任务,每三分钟运行一次。 但是,在某些情况下,我希望在高优先级任务进入时立即运行任务。

例如,您有一个每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指南中有解释。 它是发送任务消息的快捷方式,但它不支持执行选项。

所以在这种情况下,我需要做的就是调用send_email.delay(**high_priority_email_details) ,它将立即运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM