Zweimal mit Twisted verbinden - wie geht das richtig?

Ich möchte Twisted (und StarPy, eine Protokollimplementierung für Asterisk ami) verwenden, um eine Verbindung zu einem Asterisk-Server herzustellen. Die Anwendung leitet dort ein ausgehendes Fax ein. Ich habe einige Hinweise zu meinem Problem gefunden, kann aber nicht herausfinden, wie ich damit richtig umgehen soll.

Das erste Fax wird korrekt gesendet.

Problem ist, wenn ich zum zweiten Mal Twisted anrufe, bleibt die Anwendung in der Hauptschleife hängen.

Ich weiß, dass ich das hier NICHT machen darf:

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"

Ich habe den Code vereinfacht - er macht nichts als sich wieder an- und abzumelden. Es wird niemals vom zweiten Aufruf von reactor.run () zurückkehren.

Wie wird das richtig gemacht? Ich stecke hier fest - danke im Voraus.

Beste Grüße, Florian.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage