#python #sockets #smtp #smtplib
#python #сокеты #smtp #smtplib
Вопрос:
У меня есть очень простая программа для отправки почты, которая использует pythons smtplib
для отправки почты через защищенный сокет. По какой-то причине создание сокета занимает около 80 секунд. Это код, который я использую:
with smtplib.SMTP_SSL(config['SMTP_HOST'], config['SMTP_PORT']) as server:
# Send mail here
После создания сокета все работает гладко и быстро. Временное «исправление» проблемы заключается в том, чтобы передать небольшой тайм-аут, например:
with smtplib.SMTP_SSL(config['SMTP_HOST'],config['SMTP_PORT'], timeout=0.5) as server:
# Send mail here
Теперь создание сокета занимает 0,5 секунды.
Кто-нибудь знает, почему это может произойти? Я использую python 3.9. Я тестировал его на python 3.7, но у меня были те же проблемы. Тот же самый скрипт мгновенно запускается на других компьютерах, так что, возможно, он не связан с python? Я запускаю macOS Big Sur 11.0.1.
Комментарии:
1. Вы говорите, что для подключения требуется 80 секунд или что через 80 секунд истекает время ожидания? Ваш второй пример предполагает, что вы не получаете соединения, вы получаете тайм-ауты. Если вы получаете тайм-аут, то в вашем вопросе почти нет информации, чтобы выяснить, почему.
2. Выполнение первого примера занимает 80 секунд. Я не думаю, что получаю тайм-ауты, потому что после этих 80 секунд он отправляет почту, и ошибки тайм-аута нет. Так что, вероятно, для подключения требуется эти 80 секунд. Почему установка небольшого тайм-аута помогает в этом случае: понятия не имею.
Ответ №1:
В чем бы ни заключалась проблема, она была исправлена с помощью последнего обновления Mac OS.