通过pyramid_celery无法正常处理来自芹菜任务的zodb对象的属性

时间:2016-11-20 22:24:44

标签: celery pyramid zodb

因此,在我的内容系统中(基于实体)我根据该对象的其他属性的值以编程方式设置zodb内容项的名称。此内容项的某些子元素是根据其父级命名的。我也需要以编程方式更新孩子的名字。 如果我从父对象的属性的set函数中执行此操作,那么它可以工作但速度很慢。相反,我试图使用芹菜运行它。我使用非常相似的代码,但它没有更新子对象名称。有什么想法吗?

我用来更新zodb对象的代码是

             new_name = agent_artifact_ref_name_calc_value(content_ob.__parent__, struct_ref)
             struct_artifact_ref = get_properties(content_ob, registry)
             struct_artifact_ref[u'name'] = new_name
             setattr(content_ob, 'name', new_name)
             transaction.commit

对zodb进行索引很慢,因此延迟并且延迟进程由主管运行,每隔5秒运行一次。

更新子项的celery任务是从更新父对象后触发的事件运行的。我已延迟此任务,以便在重新索引父对象后运行它。我可以通过查询目录来选择正确的子对象。然后我更新对象的名称。实际上,更改对象的名称相当于删除然后添加。更改子对象的名称会触发目录的所有reindex方法,但似乎无法获取名称中的更改。

有什么想法吗?

0 个答案:

没有答案