>It is possible to:
> - start the reactor when I initialize my program (eg. in main)
> - call connectTCP or connectSSL when I want and every time I want?
>
>Something like this:
>
>def check_messages(account):
>       # connect to imap server and check for new mailboxes/messages
>       reactor.connectSSL(...)
>
>
>if __name__ == "__main__":
>       reactor.run()
>
>       check_message(account1)
>       check_message(account2)
>       ...
>       do something else
>       ...
>       check_message(accountn)
>
>
>Because I can't implement this :}


Something like this (obviously won't work verbatim 
& may not be the best example, 
but hopefully will give you the idea):

def check_messages(account):
    # connect to imap server and check for new mailboxes/messages
    reactor.connectSSL(...)
    # should return a deferred!

def do_something_else():
    return defer.succeed(None)  # return a deferred here too

def something_failed(rslt):
  print rslt
  reactor.stop()

def call_my_stuff(accountList):

  # check messages asynchronously
  checks = [check_message(account) for account in accountList]

  dl = defer.DeferredList(checks)
  dl.addCallback(do_something_else) # wait until all messages checked to
run
  dl.addCallback(runner, accountList) # wait till we've done something
else
  dl.addErrback(something_failed) # ALWAYS attach errbacks

def runner(accountList):
  reactor.callLater(0.1, call_my_stuff, accountList)

if __name__ == "__main__":

    accountList = [account1, account2]
    reactor.callWhenRunning(runner, accountList)
    reactor.run()

_______________________________________________
Twisted-Python mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to