Diez B. Roggisch wrote:
Alex Jurkiewicz schrieb:
Hi all,
I'm writing a Python script to do a "mail merge" style email distribution. I create a few python threads and in each one I call `smtpserver = smtplib.SMTP(our.smtpserver.com)`. However, during the sending process, there seems to be only one connection open to our mail server at any one time. In other words, all these threads gain me no speed benefit at all!

I seem to be running into the issue where smtplib is not fully thread-safe, as mentioned in this thread:
http://mail.python.org/pipermail/python-list/2007-March/429067.html
http://mail.python.org/pipermail/python-list/2007-March/429172.html

Does anyone have suggestions as to a suitable workaround for this issue? I was looking at the Twisted library, which seems possible but significantly more complex.

I doubt that there is such issue. The above discussion is not concluding that there actually *are* threading-issues within smtplib. And looking at the source of smtplib, it certainly doesn't use any locking-primitives or (directly) any c-extension that might explain such behavior.

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?

If all the threads are using the same server, couldn't the SMTP part be
put into its own thread and then fed the pre-composed emails via a
queue?
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to