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)

email_tables(vars)問題は、出力を実行すると、メソッドが 1 回だけ実行されてからスクリプトが終了することです。

try-except 文を削除して例外を出力しないと、スクリプトは期待どおりに 7 回実行され、エラーが発生します。

再試行が機能するために、ここで何が間違っているのかわかりません。後で、例外が発生したときに、理想的には失敗した回数とともにログをファイルに保存したいと思います。

前もって感謝します

4

1 に答える 1

0

私がする必要があるのは、それを読むことができるようにするための再試行を除いて、レイズ文を追加することだけのようです。最終的なコード:

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)
于 2020-09-25T19:44:07.623 に答える