Использование try-except sentenec в python с упорством не повторяется, как ожидалось
Привет, я пытаюсь использовать упорство для отправки электронного письма, сценарий следующий:
from tenacity import retry, stop_after_attempt
from smtplib import SMTP_SSL, SMTP
@retry(stop = stop_after_attempt(7))
def email_tables(mails_to_list, smtp_host, smtp_port, smtp_user, smtp_pass, tables):
try:
#ENVIO DE DATOS
#Lista de mails a enviar la info
mails_to = mails_to_list
msg = (f"From: {smtp_user}\r\nSubject: Daily app status\r\nTo: %s\r\n\r\n" % (", ".join(mails_to)))
for table in tables:
msg = msg + table + "\r\n\r\n"
print(msg)
with SMTP(host = smtp_host, port = smtp_port) as smtp:
smtp.starttls()
smtp.login(user = smtp_user, password = smtp_pass)
smtp.sendmail(from_addr = smtp_user, to_addrs = mails_to, msg = msg)
smtp.quit()
except Exception:
print(Exception)
Дело в том, что если я бегу
email_tables(vars)
вывод выполняется только один раз в методе, а затем выходит из сценария.
Если я удалю предложение try-except и не распечатаю Exception, сценарий запускается 7 раз, как ожидалось, а затем вызывает ошибку.
Я не знаю, что я делаю здесь не так, чтобы повторить попытку. Позже я хотел бы сохранить журнал в файле при возникновении исключения, в идеале с указанием количества сбоев.
заранее спасибо
1 ответ
Похоже, все, что мне нужно было сделать, это добавить предложение о повышении, за исключением повторной попытки, чтобы прочитать его. Окончательный код:
from tenacity import retry, stop_after_attempt
from smtplib import SMTP_SSL, SMTP
@retry(stop = stop_after_attempt(7))
def email_tables(mails_to_list, smtp_host, smtp_port, smtp_user, smtp_pass, tables):
try:
#ENVIO DE DATOS
#Lista de mails a enviar la info
mails_to = mails_to_list
msg = (f"From: {smtp_user}\r\nSubject: Daily app status\r\nTo: %s\r\n\r\n" % (", ".join(mails_to)))
for table in tables:
msg = msg + table + "\r\n\r\n"
print(msg)
with SMTP(host = smtp_host, port = smtp_port) as smtp:
smtp.starttls()
smtp.login(user = smtp_user, password = smtp_pass)
smtp.sendmail(from_addr = smtp_user, to_addrs = mails_to, msg = msg)
smtp.quit()
except Exception:
print(Exception)
raise(Exception)