В настоящее время у меня есть сценарий, определенный следующим образом:
import traceback
import logging
import time
logging.basicConfig(level=loggings.DEBUG)
logger=logging.getLogger(__name__)
if __name__ == '__main__':
try:
main_code()
except Exception as e:
logger.debug(traceback.format_exc())
error = traceback.format_exc()
with smtplib.SMTP("mailhub.global.company.com") as mailServer:
msg = MIMEMultipart('related')
msg['Subject'] = Header(u'Test', 'utf-8')
msg['X-Priority'] = '2'
body = "Delivery Failure, the following exception occurred:\n\n" + str(error)
msg.attach(MIMEText(body, 'plain'))
mailServer.sendmail("email@gmail.com", ["email@gmail.com"], msg.as_string())
mailServer.quit()
print("Exception occurred- delivery failure email sent")
Это прекрасно работает в том смысле, что при возникновении ошибки я получаю электронное письмо с traceback.
Я попыталсядобавьте «повтор» в код в случае сбоя, чтобы он повторил 5 попыток, с интервалом в 5 секунд, например:
if __name__ == '__main__':
for attempt in range(5):
try:
main_code()
except Exception as e:
print("Error occurred, retrying in 5 seconds!")
time.sleep(5)
continue
else:
break
else:
logger.debug(traceback.format_exc())
error = traceback.format_exc()
with smtplib.SMTP("mailhub.global.company.com") as mailServer:
msg = MIMEMultipart('related')
msg['Subject'] = Header(u'Test', 'utf-8')
msg['X-Priority'] = '2'
body = "Delivery Failure, the following exception occurred:\n\n" + str(error)
msg.attach(MIMEText(body, 'plain'))
mailServer.sendmail("email@gmail.com", ["email@gmail.com"], msg.as_string())
mailServer.quit()
print("Exception occurred- delivery failure email sent")
Однако по какой-то причине, когда я получаю сообщение об ошибке доставки сейчасвсе, что он говорит, это: Delivery Failure, the following exception occurred: NoneType: None
Есть идеи, как отследить ошибку в отправленном электронном письме?