Merge pull request #9928 from AKedar21/patch-5

perf: enqueue instance of send_one for better performance
This commit is contained in:
mergify[bot] 2020-04-27 14:27:58 +00:00 committed by GitHub
commit 7df907a8ed
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -6,7 +6,7 @@ import frappe
import sys
from six.moves import html_parser as HTMLParser
import smtplib, quopri, json
from frappe import msgprint, _, safe_decode, safe_encode
from frappe import msgprint, _, safe_decode, safe_encode, enqueue
from frappe.email.smtp import SMTPServer, get_outgoing_email_account
from frappe.email.email_body import get_email, get_formatted_html, add_attachment
from frappe.utils.verified_command import get_signed_params, verify_request
@ -347,8 +347,21 @@ def flush(from_test=False):
if not smtpserver:
smtpserver = SMTPServer()
smtpserver_dict[email.sender] = smtpserver
send_one(email.name, smtpserver, auto_commit, from_test=from_test)
if from_test:
send_one(email.name, smtpserver, auto_commit, from_test=from_test)
else:
send_one_args = {
'email': email.name,
'smtpserver': smtpserver,
'auto_commit': auto_commit,
'from_test': from_test
}
enqueue(
method = 'frappe.email.queue.send_one',
queue = 'short',
**send_one_args
)
# NOTE: removing commit here because we pass auto_commit
# finally:
@ -377,8 +390,13 @@ def send_one(email, smtpserver=None, auto_commit=True, now=False, from_test=Fals
`tabEmail Queue`
where
name=%s
for update''', email, as_dict=True)[0]
for update''', email, as_dict=True)
if len(email):
email = email[0]
else:
return
recipients_list = frappe.db.sql('''select name, recipient, status from
`tabEmail Queue Recipient` where parent=%s''', email.name, as_dict=1)