如何防止Celery在上一次执行完成之前执行定期任务?
我有一个服务器集群,连接到一个共同的数据库服务器,执行Celery任务,我发现每个服务器偶尔会同时运行相同的任务,以及不同的服务器同时运行相同的任务。这导致了很多竞争条件,在痛苦微妙的方式下破坏了我的数据。
我已经阅读了Celery的文档,但我找不到任何明确允许此选项的选项。我找到了一个类似的问题,但建议的修复似乎像一个黑客,因为它依赖于Django的缓存框架,因此可能不被集群中的所有服务器共享,从而允许多个服务器同时执行相同的任务。
在Celery中是否有任何选项可以记录当前正在运行的任务,并在清除数据库记录之前不再运行?
我有一个服务器集群,连接到一个共同的数据库服务器,执行Celery任务,我发现每个服务器偶尔会同时运行相同的任务,以及不同的服务器同时运行相同的任务。这导致了很多竞争条件,在痛苦微妙的方式下破坏了我的数据。
我已经阅读了Celery的文档,但我找不到任何明确允许此选项的选项。我找到了一个类似的问题,但建议的修复似乎像一个黑客,因为它依赖于Django的缓存框架,因此可能不被集群中的所有服务器共享,从而允许多个服务器同时执行相同的任务。
在Celery中是否有任何选项可以记录当前正在运行的任务,并在清除数据库记录之前不再运行?
我正在使用Django-Celery模块,虽然它提供了/admin/djcelery/taskstate/和/admin/djcelery/workerstate/页面,但我从来没有在那里看到任何长时间运行的任务或工作者。