質問

以下のコードを考えてみます::

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ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top