使用Transmogrifier导入大量内容时如何处理回溯?

时间:2011-07-31 16:24:46

标签: plone transmogrifier

有时在导入大量内容时“继续”,忽略某些内容可能发生的追溯和其他失败是很方便的。

Transmogrifier中是否有任何通用机制可以使这更容易?我能看到的唯一方法是:

  • 仅使用尝试/除外的自定义蓝图。
  • 使用包装器执行管道,每次将源蓝图输入更改为故障后一个。

这些都不是特别方便或可取,因此我的问题。

2 个答案:

答案 0 :(得分:4)

您只需编写一个蓝图,该蓝图将处理并忽略您可能想要的所有“追溯”。一定要在“源”蓝图之后把它放在try / except块之后。

...

def __call__(self):
    for item in self.previous:
        try:
            yield item
    except Exception, e
        # here do with exception whatever you want
        pass

答案 1 :(得分:1)

我知道这不是这个(常见)问题的真正解决方法,但这是我唯一的解决方案:我使用了很多管道步骤,每个步骤都会对我的项目进行单一的,众所周知的更改。如果有一个步骤,我担心可能会导致麻烦,我添加一个条件步骤(collective.transmogrifier.sections.condition),并简单地删除可能不好的项目。我认为真正的解决方案可能是改变管道运行器调用每一步的方式,它应该负责以可自定义的方式管理异常。如果其他人有一个我感兴趣的更好的解决方案,我也是。