私の方法は次の形式です。
@defer.inlineCallbacks
def myAsyncMethod():
if someCondition:
yield anotherAsyncMethod()
問題は、そうsomeCondition
でない場合はTrue
歩留まりが発生せず、これが本質的に同期関数になることです。デコレーターはこれをエラーにします。
今、私はちょうどyield 1
それの最後にやっています。それはここで正しいことですか?私はもちろん行うことができます:
d = Deferred()
d.callback(0)
yield d
しかし、それがどのように違うのかわかりません
編集:ここで意味したのは、実行しようとするyield myAsyncMethod()
と例外が生成されるということです。例外を処理する必要はありません。それを回避する 1 つの方法は、myAsyncMethod() の最後に何かを単に生成することですが、これを行うためのハックしない別の方法はありますか。ここでの一般的な慣行は何ですか?