私はPython経由でamazon SESに電子メールを送りたいと思っています。アマゾンSESに電子メールを送る最速の方法は何でしょうか?
私は約10メール/秒(実際には2倍の理想的な)の送信レートに到達したいと思います。
私が見つけたのは、Python smtplib
ライブラリを使って直接接続すると、事態が非常に遅くなることです。ここで私はこのコードを使用する場合
def login_to_amazon(port=587, secure=True, options=(25, 465, 587)):
s1 = smtplib.SMTP('email-smtp.us-east-1.amazonaws.com', port)
if secure:
s1.starttls()
s1.login('aws_key', 'aws_secret')
return s1
def send_multiple_emails(msg, number, port=587):
s1 = login_to_amazon(port)
for _ in range(number):
s1.sendmail('[email protected]', '[email protected]', str(msg))
# I send 5 mails here
send_multiple_emails('about 100 byte message', number=5)
何が起こるかのpycallgraphとボトムラインを生成したグラフだ:それは5通の電子メールを送信するために4.5秒かかります。今
from boto import ses
c1 = ses.connect_to_region('us-east-1', aws_access_key_id='public_key', aws_secret_key='secret')
def boto_send_mail(nonce=None):
if nonce is None:
nonce = str(datetime.now())
return c1.send_email(source, subject='testing {}'.format(str(nonce)), body=str(nonce), to_addresses=source)
私はboto_send_mail
5回を呼び出すプロファイルあれば、それは5通の電子メールを送信するために2秒かかる:
は、それから私はのbotoインタフェースを試してみました。現時点で
、私はちょうど5通のメールのスパイクを送信する場合、それは私をブロックしませんが、私は、一日あたり200通の電子メール、および毎秒1通の電子メールを送信することができますので、これは私ができるすべての分析であります行う。
誰でもこれをよりうまくやっていますか?私は現在の2倍以上の速度が必要です。
複数のプロセス/スレッド/ asyncioを使用する必要がありますか?AWS SES REST APIですか?
アドバイスが役に立ちます
あまりにも多くのISPを送信すると、あなたのアカウントにスパム送信者としてタグを付けることがあります。 – Marichyasana