芹菜 - 从龙卷风界面开始和停止定期任务



我正在尝试从龙卷风应用程序界面启动和停止芹菜周期性任务。

例如,假设有两个任务:AB。 我希望用户能够从 HTML 表单中选择周期(每分钟、每月、每 5 分钟等(并单击任务 A 上的start。 用户可以对任务 B 执行相同的操作。然后回到一个页面上,其中有一个按钮可以随时停止任务 A 和/或任务 B。

我一直在浏览很多关于这个主题的问题,但没有一个回答这个简单的问题。

截至目前,我的龙卷风应用程序可以毫无问题地处理简单的芹菜工人,我面临的问题是periodic tasks。(https://docs.celeryproject.org/en/latest/reference/celery.html#celery.Celery.on_after_configure(

continuous_monitoring_worker.py:

continuous_tracking_worker_app.conf.timezone = 'Europe/London'
@continuous_tracking_worker_app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
print('OK inside setup periodic tasks ...')
sender.add_periodic_task(10.0, test.s('Hello World'), name='add every 10')
# In case I want to stop the task later
#time.sleep(35)
#print('beat_schedule = {}'.format(continuous_tracking_worker_app.conf.beat_schedule))
#del continuous_tracking_worker_app.conf.beat_schedule['add every 10']
@continuous_tracking_worker_app.task
def test(name):
print('Periodic task called, name = {}'.format(name))

使用此代码,我会遇到以下问题:当我启动应用程序时,它每 10 秒启动一次任务(我猜是因为装饰器@continuous_tracking_worker_app.on_after_configure.connect(。但是我希望任务从界面按需启动(在我的龙卷风视图文件的后端通过调用setup_periodic_tasks(continuous_tracking_worker_app),而不是在龙卷风应用程序启动时!

Celery Beat 做不到这一点。

您可以考虑使用芹菜红节拍,使之成为可能。

Celery Beat 可以做到这一点。

只需按照此处所述设置 expires 变量,(转到过期选项卡(

相关内容

  • 没有找到相关文章

最新更新