有时在导入大量内容时“继续”很方便,忽略某些内容可能出现的回溯和其他故障。
Transmogrifier 中是否有任何通用机制可以使这更容易?我能看到的唯一方法是:
- 仅使用在适当情况下尝试/除外的自定义蓝图。
- 使用包装器执行将源蓝图输入更改为每次失败后的管道。
这些都不是特别方便或可取的,因此我的问题。
有时在导入大量内容时“继续”很方便,忽略某些内容可能出现的回溯和其他故障。
Transmogrifier 中是否有任何通用机制可以使这更容易?我能看到的唯一方法是:
这些都不是特别方便或可取的,因此我的问题。
您只需要编写一个蓝图来处理和忽略您可能想要的所有“回溯”。确保将其放在“源”蓝图之后,并在 try/except 块中产生。
...
def __call__(self):
for item in self.previous:
try:
yield item
except Exception, e
# here do with exception whatever you want
pass
我知道这不是该(常见)问题的真正解决方法,但这是我唯一的解决方案:我使用了很多管道步骤,每个步骤都会对我的项目进行一次众所周知的更改。如果有一个我担心会导致麻烦的步骤,我会添加一个条件步骤(collective.transmogrifier.sections.condition)并简单地丢弃潜在的坏项目。我认为真正的解决方案可能是改变管道运行器调用每个步骤的方式,它应该负责以可定制的方式管理异常。如果其他人有更好的解决方案,我也很感兴趣。