我有一个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作业激活脚本。
答案 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(只是为了安全起见)