3

一度に 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 とやり取りしています。また、メッセージを送信するのは 1 台のマシンだけだと予想していますが、将来的には、複数のマシンがお互いを知らずに並行してメッセージを送信する可能性があります。

キューを検査するか、Python 固有の手法を使用して、メールのレートを毎秒 70 通に制限するにはどうすればよいですか?

4

1 に答える 1

3

次のコード サンプルに示すように、1 秒あたりのメッセージ数を計算できます。

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
于 2012-08-16T14:03:15.653 に答える