Народ, это похоже на базовую программу и я не могу понять, что здесь происходит не так.При запуске программа просто ждет и ничего не выводит на консоль, нажатие control-c также ничего не выводит.Пожалуйста, сообщите.
Насколько я понимаю, следующее: (i) Реактор запускается, и callLater заставляет runProgram вызываться через '0' секунд.(ii) runProgram получает отсроченный возврат из getProcessOutputAndValue, и я добавляю Callback и Errback, а также processor.stop () в качестве обратных вызовов «Оба».
Теперь я ожидаю, что обратный вызов отложенного вызова (или ошибка при сбое)) должен быть вызван после выполнения команды.Наконец, так как указан addBoth, должен быть вызван реактор.stop (), который останавливает реактор.
from twisted.internet.utils import getProcessOutputAndValue
from twisted.internet import reactor
def printResult(result):
print u'Result is %s' % result
def printError(reason):
print u'Error is %s' % reason
def stopReactor(r):
print u'Stopping reactor'
reactor.stop()
print u'Reactor stopped'
def runProgram():
command = ['lrt']
d = yield getProcessOutputAndValue('echo', command)
d.addCallback(printResult)
d.addErrback(printError)
d.addBoth(stopReactor)
reactor.callLater(0, runProgram)
reactor.run()