Использование 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)
Другие вопросы по тегам