On Oct 13, 12:38 pm, Jan Bakuwel <[EMAIL PROTECTED]> wrote: > Hoi all, > > I'm trying to write a little code that waits for a callback routine to > be called, ideally with a timeout... > > I guess the code below is not right (using a boolean flag), but since > I'm new to Python, I don't know yet where the semaphores live and/or > whether I'm on the right track... > > Any help is much appreciated... > > Jan > > def processEmail(emailMessage): > > sendSent = False > > def sendComplete(result): > print "Message sent successfully" > processEmail.sendSent = True > #end sendComplete > > def sendFailed(error): > print >> sys.stderr, "Error", error.getErrorMessage() > processEmail.sendSent = True > #end sendFailed > > if emailMessage.is_multipart(): > print "...multipart" > for pl in emailMessage.walk(): > pass > else: > print "...not multipart" > # simulate some processing that will take place here > time.sleep(1) > > multiMessage = MIMEMultipart() > multiMessage['From'] = emailMessage['From'] > multiMessage['To'] = emailMessage['To'] > multiMessage['Subject'] = emailMessage['Subject'] > messageData = multiMessage.as_string(unixfrom=False) > sending = smtp.sendmail('smtp', '[EMAIL PROTECTED]', '[EMAIL PROTECTED]', > messageData) > sending.addCallback(sendComplete).addErrback(sendFailed) > > while not processEmail.sendSent: > print "z" > time.sleep(0.1) > #end while > > print "...done" > #raise smtp.SMTPDeliveryError(code=550, resp="Unable to deliver > email, please try again later", isFatal=True, retry=False) > print "" > #endif > > #end ProcessEmail
For semaphores, check out the mutex module (http://docs.python.org/lib/module-mutex.html). For timeouts, look at the alarm signal in the signal module (http://docs.python.org/lib/module-signal.html). --Jeff -- http://mail.python.org/mailman/listinfo/python-list