From a0b360fb880894db1981173bc90369f22c91ef36 Mon Sep 17 00:00:00 2001 From: erichhasl Date: Fri, 6 Apr 2018 11:24:07 +0200 Subject: [PATCH] emails are sent asynchronously using celery and redis --- jdav_web/jdav_web/celery.py | 14 ++++++++++++++ jdav_web/jdav_web/settings.py | 9 +++++++++ jdav_web/mailer/models.py | 1 + 3 files changed, 24 insertions(+) create mode 100644 jdav_web/jdav_web/celery.py diff --git a/jdav_web/jdav_web/celery.py b/jdav_web/jdav_web/celery.py new file mode 100644 index 0000000..9d87f39 --- /dev/null +++ b/jdav_web/jdav_web/celery.py @@ -0,0 +1,14 @@ +import os +from celery import Celery + +from django.conf import settings + +# set the default Django settings module for the 'celery' program. +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'jdav_web.settings') + +app = Celery() +app.config_from_object('django.conf:settings') +app.autodiscover_tasks(settings.INSTALLED_APPS) + +if __name__ == '__main__': + app.start() diff --git a/jdav_web/jdav_web/settings.py b/jdav_web/jdav_web/settings.py index 1aaa932..9f0b80e 100644 --- a/jdav_web/jdav_web/settings.py +++ b/jdav_web/jdav_web/settings.py @@ -48,6 +48,8 @@ INSTALLED_APPS = [ 'members.apps.MembersConfig', 'mailer.apps.MailerConfig', 'easy_select2', + 'djcelery_email', + 'djcelery', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', @@ -162,8 +164,15 @@ EMAIL_PORT = 587 if deployed else 25 EMAIL_HOST_USER = os.environ.get('EMAIL_HOST_USER', '') EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD', '') EMAIL_USE_TLS = True if deployed else False +EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend' # Admin setup ADMINS = (('admin', 'christian@merten-moser.de'),) + + +# Celery and Redis setup +REDIS_HOST = 'localhost' +REDIS_PORT = '6379' +BROKER_URL = 'redis://' + REDIS_HOST + ':' + REDIS_PORT + '/0' diff --git a/jdav_web/mailer/models.py b/jdav_web/mailer/models.py index aa08f16..94276f5 100644 --- a/jdav_web/mailer/models.py +++ b/jdav_web/mailer/models.py @@ -5,6 +5,7 @@ from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext from .mailutils import send, get_content, NOT_SENT, SENT, PARTLY_SENT, mail_root from utils import RestrictedFileField +from jdav_web.celery import app import os