Функция никогда не вызывается без @inlineCallback - PullRequest
0 голосов
/ 04 октября 2018

Я пытался протестировать скрученные функции обратного вызова и увидеть, что код ниже работает.Однако, когда я удаляю @inlineCallback в коде, я не вижу напечатанного сообщения «Hello» и, кажется, никогда не выполняется.

Если я использую функцию hello без цикла for внутри, то она печатает«Привет» без @inlineCallback декоратора.Как это возможно?

Если оператор yield не существует, он выполняется нормально;однако, если в функции существует оператор yield, то он выполняется только тогда, когда отмечен @inlineCallback.

Как это возможно ??

from autobahn.twisted.component import run
from autobahn.twisted.util import sleep

@inlineCallback
def hello():
    print "Hello"
    for i in range(0, 3):
        print "Hello", i
        yield sleep(1)

reactor.callLater(1, hello)
reactor.run()
...