2

大量のコンテンツをインポートする場合、特定のコンテンツで発生する可能性のあるトレースバックやその他の障害を無視して、「続行」すると便利な場合があります。

これを簡単にするための Transmogrifier の一般的なメカニズムはありますか? 私が見ることができる唯一のアプローチは次のとおりです。

  • 必要に応じて試行/除外するカスタム ブループリントのみを使用してください。
  • ラッパーを使用してパイプラインを実行し、ソース ブループリントの入力を毎回 1-after-the-failure に変更します。

これらはどちらも特に便利でも望ましいものでもないので、私の質問です。

4

2 に答える 2

4

必要なすべての「トレースバック」を処理して無視するブループリントを1 つ作成するだけで済みます。「source」ブループリントの直後に配置し、try/except ブロックで yield してください。

...

def __call__(self):
    for item in self.previous:
        try:
            yield item
    except Exception, e
        # here do with exception whatever you want
        pass
于 2011-07-31T17:49:54.267 に答える
1

これがその(一般的な)問題の実際の回避策ではないことは承知していますが、これが私の唯一の解決策です。多くのパイプラインステップを使用して、それぞれが1つのよく知られたアイテムに変更を加えます。問題を引き起こす可能性のあるステップがある場合は、条件ステップ(collective.transmogrifier.sections.condition)を追加し、潜在的に不良なアイテムを削除します。本当の解決策は、パイプラインランナーが各ステップを呼び出す方法を変更することである可能性があると思います。それは、カスタマイズ可能な方法で例外を管理する責任があるはずです。他の誰かが私が興味を持っているより良い解決策を持っているなら、私もそうです。

于 2011-07-31T17:11:44.257 に答える