【发布时间】:2009-12-30 08:44:44
【问题描述】:
我想使用 twisted(和 StarPy,它是 asterisk ami 的协议实现)连接到 asterisk 服务器。应用程序在那里启动传出传真。我发现了一些关于我的问题的提示,但我不知道如何正确处理。
第一份传真已正确发送。
问题是,如果我为 第二次,应用程序保持 挂在主循环中。
我知道我可能不会在这里这样做:
from starpy import manager
from twisted.internet import reactor
def main():
f = manager.AMIFactory(cUser, cPass)
print "Login"
df = f.login(cServer, cPort)
def onLogin(protocol):
print "Logoff again"
df = protocol.logoff()
def onLogoff( result ):
print "Logoff erfolgt"
reactor.stop()
return df.addCallbacks( onLogoff, onLogoff )
def onFailure( reason ):
print "Login failed"
print reason.getTraceback()
df.addCallbacks( onLogin, onFailure )
return df
if __name__ == "__main__":
reactor.callWhenRunning( main )
reactor.run(installSignalHandlers=0)
print "runned the first time"
reactor.callWhenRunning( main )
reactor.run(installSignalHandlers=0)
print "will never reach this point"
我简化了代码 - 它只是再次登录 + 注销。它永远不会从第二个 reactor.run() 调用返回。
这是如何正确完成的?我被困在这里 - 在此先感谢。
最好的问候, 弗洛里安。
【问题讨论】:
标签: twisted