refactor: Newsletter failure handling
Don't raise after handling generic Exception class. Just log error and go on. This way, other newsletters will continue to loop instead of breaking after one failure Added more context (docname) to logged error
This commit is contained in:
parent
46c6b6621e
commit
e80d5f25c6
1 changed files with 28 additions and 6 deletions
|
|
@ -336,12 +336,34 @@ def get_newsletter_list(doctype, txt, filters, limit_start, limit_page_length=20
|
|||
'''.format(','.join(['%s'] * len(email_group_list)),
|
||||
limit_page_length, limit_start), email_group_list, as_dict=1)
|
||||
|
||||
|
||||
def send_scheduled_email():
|
||||
"""Send scheduled newsletter to the recipients."""
|
||||
scheduled_newsletter = frappe.get_all('Newsletter', filters = {
|
||||
'schedule_send': ('<=', now_datetime()),
|
||||
'email_sent': 0,
|
||||
'schedule_sending': 1
|
||||
}, fields = ['name'], ignore_ifnull=True)
|
||||
scheduled_newsletter = frappe.get_all(
|
||||
"Newsletter",
|
||||
filters={
|
||||
"schedule_send": ("<=", frappe.utils.now_datetime()),
|
||||
"email_sent": False,
|
||||
"schedule_sending": True,
|
||||
},
|
||||
ignore_ifnull=True,
|
||||
pluck="name",
|
||||
)
|
||||
|
||||
for newsletter in scheduled_newsletter:
|
||||
send_newsletter(newsletter.name)
|
||||
try:
|
||||
frappe.get_doc("Newsletter", newsletter).queue_all()
|
||||
|
||||
except Exception:
|
||||
frappe.db.rollback()
|
||||
|
||||
# wasn't able to send emails :(
|
||||
frappe.db.set_value("Newsletter", newsletter, "email_sent", 0)
|
||||
message = (
|
||||
f"Newsletter {newsletter} failed to send"
|
||||
"\n\n"
|
||||
f"Traceback: {frappe.get_traceback()}"
|
||||
)
|
||||
frappe.log_error(title="Send Newsletter", message=message)
|
||||
|
||||
frappe.db.commit()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue