Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建一次只执行一次的芹菜任务_Python_Locking_Celery - Fatal编程技术网

Python 创建一次只执行一次的芹菜任务

Python 创建一次只执行一次的芹菜任务,python,locking,celery,Python,Locking,Celery,我已经在芹菜文档()中阅读了相应的文章,但是我并不完全喜欢建议的解决方案。我的任务运行时间很长(从15分钟到1小时甚至更长),因此选择一些LOCK_EXPIRE设置似乎不可靠:如果结果太小,我会同时运行两个任务,如果太大,芹菜进程因某种原因死亡,我需要手动删除锁定缓存密钥 我想到的想法是,我可以使用两种不同的锁:一种是用fcntl.Lock创建的(用于不同的芹菜工作进程),另一种是用threading.Lock()创建的(当任务在同一芹菜进程中执行时)。然而,拥有两个锁似乎有些过分 所以,我的问

我已经在芹菜文档()中阅读了相应的文章,但是我并不完全喜欢建议的解决方案。我的任务运行时间很长(从15分钟到1小时甚至更长),因此选择一些LOCK_EXPIRE设置似乎不可靠:如果结果太小,我会同时运行两个任务,如果太大,芹菜进程因某种原因死亡,我需要手动删除锁定缓存密钥

我想到的想法是,我可以使用两种不同的锁:一种是用fcntl.Lock创建的(用于不同的芹菜工作进程),另一种是用threading.Lock()创建的(当任务在同一芹菜进程中执行时)。然而,拥有两个锁似乎有些过分


所以,我的问题是:对于我的问题,最简单的解决方案是什么?它不必是跨平台的,只能支持Linux。

只需使用一个没有过期的锁,并创建一个“调查者”任务,检查是否一切正常,也就是说,如果另一个任务意外死亡,它会修复锁问题。另外,请看一看。

谢谢您的回答。我最喜欢Redis锁定解决方案。