繁体   English   中英

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

[英]limiting the rate of emails using python

我有一个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作业激活的。

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

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)

(注意:编写此文件是为了获得最大的清晰度,而非最大的效率)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM