Twisted - передать результат в несколько обратных вызовов - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть две функции обратного вызова B, C, и я хотел бы, чтобы они обработали результат функции A, возвращающей Deferred (A-> B -> C). Обычно я бы объединял их в одну, но по какой-то причине я не могу этого сделать.

Из того, что я знаю, витой конвейер обратного вызова обрабатывает возврат предыдущего обратного вызова. Решение, очевидно, состоит в том, чтобы добавить B, C в качестве обратных вызовов к A, и передать первоначальный возврат A в B и через return в C. Есть ли лучший способ сделать это, что-то вроде reverse DeferredList ?

1 Ответ

0 голосов
/ 11 февраля 2020

Или, может быть, вы могли бы использовать inlineCallbacks

`
from twisted.internet.defer import inlineCallbacks

@inlineCallbacks
def doThing():
     result = yield A()
     B(result)
     C(result)

     # or if it is a function returning a deferred
     yield B(result)
     yield C(result)
`
...