ツイス:例外ではない微量の場合エラーからのコールバック
-
26-09-2019 - |
質問
以下のコードを考えてみます::
df = defer.Deferred()
def hah(_): raise ValueError("4")
df.addCallback(hah)
df.callback(hah)
場合で、例外だけが食べられました。がかったです。ていただきで表示されますか。っ defer.setDebugging(True)
しても、何の効果もありません。
私はこのため、その他の時間を取得しますプリントアウト"は独自のレンダリングメカニズムと誤の繰り延:".どうやっていけばいいですか?こかるでしょうか?いたように、これまでとは違っただの追加errbackる df
その後、errbackが呼び出され、例外がいは印刷のエラーや何といっても、僕は手動で追加するハンドラを毎の繰延します。
解決
例外的にも座っての繰り延べられます。ることができな成果でこの点:
- として追加できる、errbackの繰り延べられます。どんを取得しまうと失敗を含む例外を向上させました。
- きましょう、繰延するゴミの収集(明示的に削除
df
, 戻しの機能、または紛失、参照他のいずれかの方法によって).このトリガーの"独自のレンダリングメカニズムと誤の繰り延"コードです。
でerrbackを追加できる繰延時間(すなわち、最初の点、Deferredsないその独自のレンダリングメカニズムと誤りです。ない場合のエラーは独自のレンダリングメカニズムと、独自のレンダリングメカニズムです。この場合のみ繰延はごみ収集しますので必ず誰かの例外で、その応させていただくことがログに出力されます。
一般的に、たいてくださいerrbacksにDeferreds、精密なのである場合繰延取得しまゴミを収集します。ですが、長時間ですが、長時間つき合を除いない場合はお客様が、ご自身のerrback付属します。
こする必要はありません、大変な負担となります。任意繰延(a)であるから返されるコールバック関数を別の繰延(b)(ieがchainingう)はその誤b.(A)は必要ありません追加errbacksでログインおよび報告、(b)。また単一の論理的なタスクが複雑で、多くの非同期操作をすることのほとんどの場合すべてのDeferredsる方の事業にチャンネル結果(成功または失敗)を主に繰延を表す論理動作します。おくだけで特別なエラー処理行動との繰り延びるように取り扱いは誤差からその他のDeferredsます。