Threaded alternatives to smtplib?
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Mon May 4 03:40:34 EDT 2009
En Mon, 04 May 2009 04:19:21 -0300, Alex Jurkiewicz
<alex at bluebottle.net.au> escribió:
> Diez B. Roggisch wrote:
>> Without more code, it's impossible to tell if there is anything
>> peculiar in your usage of the lib. Maybe you close your connections to
>> fast to see several open?
>
> Here's the relevant stuff from my (python2.6) code:
>
>
> CONCURRENCY = 3
>
> def threadProcessRecipient():
> # Each thread has its own SMTP connection
> smtpserver = smtplib.SMTP(SMTPSERVER)
> # Each thread pulls a recipient entry from the queue to process
> and loops until the queue is empty.
> try:
> recipientData = recipientQueue.get_nowait()
> except Queue.Empty:
> recipientData = None
> while recipientData:
> message = prepareMessage()
> sendMail(senderEmail, recipientEmail, message, smtpserver)
> recipientQueue.task_done()
> try:
> recipientData = recipientQueue.get_nowait()
> except Queue.Empty:
> recipientData = None
> smtpserver.quit()
Try logging the start/stop of your threads. It may be that your threads
stop before you think. The above code works correctly only if you fill the
queue before starting any thread - because as soon as a thread sees the
queue empty, it finishes.
You could use the sample code in the Queue documentation at the end of
http://docs.python.org/library/queue.html
--
Gabriel Genellina
More information about the Python-list
mailing list