Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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_Django_Celery - Fatal编程技术网

检查Python任务的芹菜队列

检查Python任务的芹菜队列,python,django,celery,Python,Django,Celery,我有一个Django+芹菜应用程序,芹菜用于将Django模型实例推(拉)到第三方SOAP服务 我的Django模型之间有依赖关系,还有一个简单的散列,如下所示: class MyModel(Models): def get_dependencies(self): # ... return [...] def __hash__(self): return hash(self.__class__.__name__+str(self.

我有一个Django+芹菜应用程序,芹菜用于将Django模型实例推(拉)到第三方SOAP服务

我的Django模型之间有依赖关系,还有一个简单的散列,如下所示:

class MyModel(Models):
    def get_dependencies(self):
        # ...
        return [...]

    def __hash__(self):
        return hash(self.__class__.__name__+str(self.pk))
celery -A server worker -P eventlet -c 100
这个散列在我自己的实现中很方便,由于稳定性问题,我不得不放弃它。芹菜是一种更坚实的土壤

当我将实例推送到SOAP服务时,我必须确保它的依赖项已经被推送到。这是通过检查所有相关实例的
pushed\u ok
时间戳字段来完成的

困难的部分是推送一个实例
a
,它依赖于实例列表
deps
(都是
MyModel
子类的实例)。我无法推送
a
,除非
deps
中的所有实例都已由芹菜处理。换句话说,我需要序列化任务,以便遵循dependecies顺序

芹菜是这样做的:

class MyModel(Models):
    def get_dependencies(self):
        # ...
        return [...]

    def __hash__(self):
        return hash(self.__class__.__name__+str(self.pk))
celery -A server worker -P eventlet -c 100
如何防止其中一个Eventlet(/process/thread)在其依赖项(若有的话)被其他Eventlet运行完之前运行
a


感谢您的帮助。

我找到了一个实用的解决方案,将资源的所有依赖项检查(包括将不同步的依赖项推送到soap服务器)移到芹菜任务中。而不是试图根据资源的依赖项序列化任务

好的一面是它保持了它的简单性,我可以快速实现它

不利的一面是,我暂时锁定了一个工作进程,并且可能会执行许多同步SOAP操作,而不是将这些操作分派给其他工作进程