我想一次发送10000封个人邮件;可能来自一个大的for
循环:
for user in _10000_users:
msg = generate_message( user)
if(ses.can_send_more_messages == False):
sleep( 0.1) #to throttle ourselves
ses.send_message( msg)
但我担心SES帐户上的 70邮件/秒节流。因此,我希望我的程序通过检查队列来尊重此限制,并等待它超出限制并仅在清除时再次发送。
我在Python中使用boto与SQS进行交互。我希望只有一台机器可以发送消息,尽管将来多台机器可能并行发送消息而彼此无知。
如何通过检查队列或使用特定于Python的技术,将电子邮件的速率限制为每秒70个?
答案 0 :(得分:2)
您可以像下一个代码示例所示计算每秒邮件的速率:
from time import time
time_started = time()
messages_sent = 0.
MAX_PER_SEC = 70
for user in _10000_users:
msg = generate_message(user)
if messages_sent / (time() - time_started) >= MAX_PER_SEC: # Rate condition
sleep(0.1)
ses.send_message(msg)
messages_sent += 1