繁体   English   中英

如何创建在启动Django应用程序后无限期运行的单例芹菜任务?

[英]How do you create a singleton celery task that runs indefinitely upon starting a Django application?

现在,我有一个@sharedtask ,它完全遵循以下代码: http : @sharedtask

以及以下调度程序设置:

CELERYBEAT_SCHEDULE = {
    'indefinite-task': {
        'task': 'app.tasks.indefinite_task',
        'schedule': timedelta(seconds=1),
    },
}

但是我的两个工人似乎多次运行任务,大概是因为一个工人有并发线程? 如何确保任务仅在单个工作线程上由单个线程运行一次?

我在shell中看到的示例:

11:00:43 worker.1 | [2015-05-05 15:00:43,444: DEBUG/Worker-1] app.tasks.indefinite_task[b8b0445c-91e6-4652-bd75-4c609149161f]: Acquiring lock
11:00:43 worker.1 | [2015-05-05 15:00:43,444: DEBUG/Worker-2] app.tasks.indefinite_task[b8b0445c-91e6-4652-bd75-4c609149161f]: Acquiring lock

编辑:我正在与heroku使用Procfile

也许您想在自己的工作进程中运行python脚本。

例如:

worker: python indefinite_task.py

这样可以确保仅对该工人运行一项任务。

暂无
暂无

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

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