В Twisted вы, в основном, хотите обертку вокруг функции, которая возвращает Deferred (например, слой Twisted DB), ждет его результатов и возвращает их. Тем не менее, вы не можете ждать ожидания, так как он использует ваши циклы реактора, и проверка выполнения задачи с использованием Twisted неблокирующего ожидания, вероятно, неэффективна.
Решат ли вашу проблему inlineCallbacks или deferredGenerator? Они требуют современного Twisted. См. Документацию по витой матрице .
def thingummy():
thing = yield makeSomeRequestResultingInDeferred()
print thing #the result! hoorj!
thingummy = inlineCallbacks(thingummy)
Другой вариант заключается в том, чтобы иметь два метода, которые выполняют один и тот же шаблон SQL, один из которых использует runInteraction , который блокирует, и другой, который использует runQuery, который возвращает Deferred, но для этого потребуется больше путей кода которые делают то же самое.