diff --git a/erpnext/crm/doctype/newsletter/newsletter.py b/erpnext/crm/doctype/newsletter/newsletter.py index 52d3178351..2dc975e464 100644 --- a/erpnext/crm/doctype/newsletter/newsletter.py +++ b/erpnext/crm/doctype/newsletter/newsletter.py @@ -9,7 +9,8 @@ from frappe import throw, _ from frappe.model.document import Document from frappe.email.bulk import check_bulk_limit from frappe.utils.verified_command import get_signed_params, verify_request -import erpnext.tasks +from frappe.utils.background_jobs import enqueue +from erpnext.tasks import send_newsletter from erpnext.crm.doctype.newsletter_list.newsletter_list import add_subscribers class Newsletter(Document): @@ -32,11 +33,8 @@ class Newsletter(Document): self.recipients = self.get_recipients() if getattr(frappe.local, "is_ajax", False): - # to avoid request timed out! self.validate_send() - - # hack! event="bulk_long" to queue in longjob queue - erpnext.tasks.send_newsletter.delay(frappe.local.site, self.name, event="bulk_long") + enqueue(send_newsletter, newsletter=self.name) else: self.send_bulk() diff --git a/erpnext/tasks.py b/erpnext/tasks.py index cef0ac9d15..f38c969f2e 100644 --- a/erpnext/tasks.py +++ b/erpnext/tasks.py @@ -3,23 +3,16 @@ from __future__ import unicode_literals import frappe -from frappe.celery_app import celery_task, task_logger from frappe.utils.scheduler import log -@celery_task() -def send_newsletter(site, newsletter, event): - # hack! pass event="bulk_long" to queue in longjob queue +def send_newsletter(newsletter): try: - frappe.connect(site=site) doc = frappe.get_doc("Newsletter", newsletter) doc.send_bulk() except: frappe.db.rollback() - task_logger.error(site) - task_logger.error(frappe.get_traceback()) - # wasn't able to send emails :( doc.db_set("email_sent", 0) frappe.db.commit() @@ -30,6 +23,3 @@ def send_newsletter(site, newsletter, event): else: frappe.db.commit() - - finally: - frappe.destroy()