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

Python 如何创建在启动Django应用程序时无限期运行的单例芹菜任务?,python,django,celery,django-celery,celerybeat,Python,Django,Celery,Django Celery,Celerybeat,现在我有一个@sharedtask,它完全遵循以下代码: 以及以下计划程序设置: CELERYBEAT_SCHEDULE = { 'indefinite-task': { 'task': 'app.tasks.indefinite_task', 'schedule': timedelta(seconds=1), }, } 但是我的两个工作人员似乎不止一次地运行该任务,可能是因为一个工作人员有并发线程?如何确保任务仅由单个工作线程在单个工作线程上

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

以及以下计划程序设置:

CELERYBEAT_SCHEDULE = {
    'indefinite-task': {
        'task': 'app.tasks.indefinite_task',
        'schedule': timedelta(seconds=1),
    },
}
但是我的两个工作人员似乎不止一次地运行该任务,可能是因为一个工作人员有并发线程?如何确保任务仅由单个工作线程在单个工作线程上运行一次

我在外壳中看到的示例:

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脚本

Ex:

worker:python_task.py

这可确保仅为该工作者运行一个任务