Я хочу отправить электронную почту через python на амазонку SES.Что было бы самым быстрым способом отправки электронных писем на SAS амазонки?
Я бы хотел достичь скорости отправки около 10 писем в секунду (фактически, в два раза это было бы идеально).
Я обнаружил, что если я использую библиотеку python smtplib
для непосредственного подключения, все происходит очень медленно. Вот график генерироваться с pycallgraph того, что происходит, когда я использую этот код
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)
Нижняя строка: Это занимает 4,5 секунды, чтобы отправить 5 электронных писем.
Затем я попробовал интерфейс Boto:
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 раз, это занимает 2 секунды, чтобы отправить 5 электронных писем.
На данный момент я могу только послать 200 писем в день и 1 электронную почту в секунду, хотя, если я просто отправить шипы из 5 писем, он не блокирует меня, так что это все анализы я могу делать.
Кто-нибудь делает это лучше? Мне нужно быть как минимум в 2 раза быстрее, чем я.
Должен ли я использовать несколько процессов/потоков/асинцио, API AWS SES REST?
Любые советы были бы полезны
Некоторые интернет-провайдеры могут пометить вашу учетную запись как отправителя спама, если вы слишком скоро отправите слишком много. – Marichyasana