【发布时间】:2012-04-12 13:00:10
【问题描述】:
如何防止 Celery 在上一次执行完成之前执行周期性任务?
我有一个服务器集群,链接到一个公共数据库服务器,执行 Celery 任务,我发现每台服务器有时可能同时运行相同的任务,以及同时运行相同任务的不同服务器。这导致了许多竞争条件,它们以极其微妙的方式破坏了我的数据。
我一直在阅读Celery's docs,但我找不到任何明确允许这样做的选项。我找到了similar question,但建议的修复似乎是一个 hack,因为它依赖于 Django 的缓存框架,因此可能不会被集群中的所有服务器共享,允许多个服务器同时执行相同的任务.
Celery中是否有选项可以记录数据库中当前正在运行的任务,直到数据库记录被清除后才再次运行?
我正在使用 Django-Celery 模块,尽管它提供了 /admin/djcelery/taskstate/ 和 /admin/djcelery/workerstate/ 页面,但我从未见过任何长期 -正在运行的任务或工作人员出现在那里。
【问题讨论】:
标签: python django celery django-celery