使用python限制电子邮件的速率

时间:2010-05-03 18:41:13

标签: python mysql email

我有一个python脚本,它从特定日期的数据库中读取电子邮件地址,例如今天,并逐个发送电子邮件给他们。它使用MySQLdb模块从MySQL读取数据,并将所有结果存储在字典中,并使用以下内容发送电子邮件:

rows = cursor.fetchall () #All email addresses returned that are supposed to go out on todays date.

for row is rows: #send email

但是,我的托管服务只允许我每小时发送500封电子邮件。如何限制我的脚本确保一小时内只发送500封电子邮件,然后检查数据库是否有更多的电子邮件留在今天,然后在下一个小时发送。

使用cron作业激活脚本。

3 个答案:

答案 0 :(得分:3)

如果您不介意脚本是否在数小时内运行,您可以在每封电子邮件之间暂停几秒钟。

from time import sleep

if address_count < 500:
    sleep_time = 0
else:
    sleep_time = 7.5

for address in addresses:
    send_message(address)
    sleep(sleep_time)

(注意:这是为了最大限度地提高,而不是最大效率)

答案 1 :(得分:0)

当您发送电子邮件时,是否以某种方式将其记录在数据库中,以便同一天内其他查询不会返回相同的电子邮件地址? (例如,通过删除电子邮件地址,设置标志或其他内容?)如果是这样,您可以在SQL查询中添加LIMIT 500并每小时运行一次Python脚本。

答案 2 :(得分:0)

我希望脚本每小时使用cron运行一次,并使用fetchmany代替fetchall将您从数据库中获取的记录数限制为大约490(只是为了安全起见)