[英]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.