簡體   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