Added mailer
This commit is contained in:
parent
f3ec1af691
commit
dbe165c068
5
TODO.md
5
TODO.md
|
@ -311,11 +311,8 @@ Replace celery by a custom solution?
|
||||||
*priority: custom Thread backend
|
*priority: custom Thread backend
|
||||||
*bulk: wrapper arround django-mailer to avoid loading django system
|
*bulk: wrapper arround django-mailer to avoid loading django system
|
||||||
|
|
||||||
|
|
||||||
pip3 install https://github.com/APSL/django-mailer-2/archive/master.zip
|
pip3 install https://github.com/APSL/django-mailer-2/archive/master.zip
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# TASKS_ENABLE_UWSGI_CRON_BEAT (default) for production + system check --deploy
|
# TASKS_ENABLE_UWSGI_CRON_BEAT (default) for production + system check --deploy
|
||||||
if 'wsgi' in sys.argv and settings.TASKS_ENABLE_UWSGI_CRON_BEAT:
|
if 'wsgi' in sys.argv and settings.TASKS_ENABLE_UWSGI_CRON_BEAT:
|
||||||
import uwsgi
|
import uwsgi
|
||||||
|
@ -326,8 +323,6 @@ pip3 install https://github.com/APSL/django-mailer-2/archive/master.zip
|
||||||
# TASK_BEAT_BACKEND = ('cron', 'celerybeat', 'uwsgi')
|
# TASK_BEAT_BACKEND = ('cron', 'celerybeat', 'uwsgi')
|
||||||
# SHip orchestra production-ready (no DEBUG etc)
|
# SHip orchestra production-ready (no DEBUG etc)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# import module and sed
|
# import module and sed
|
||||||
# if setting.value == default. remove
|
# if setting.value == default. remove
|
||||||
# reload generic admin view ?redirect=http...
|
# reload generic admin view ?redirect=http...
|
||||||
|
|
|
@ -12,6 +12,7 @@ class EmailBackend(BaseEmailBackend):
|
||||||
if not email_messages:
|
if not email_messages:
|
||||||
return
|
return
|
||||||
num_sent = 0
|
num_sent = 0
|
||||||
|
# TODO if multiple messages queue, else async?
|
||||||
for message in email_messages:
|
for message in email_messages:
|
||||||
priority = message.extra_headers.get('X-Mail-Priority', Message.NORMAL)
|
priority = message.extra_headers.get('X-Mail-Priority', Message.NORMAL)
|
||||||
if priority == Message.CRITICAL:
|
if priority == Message.CRITICAL:
|
||||||
|
|
|
@ -12,7 +12,7 @@ def send_message(message, num, connection, bulk):
|
||||||
connection.close()
|
connection.close()
|
||||||
connection = None
|
connection = None
|
||||||
if connection is None:
|
if connection is None:
|
||||||
# Reset connection
|
# Reset connection with django
|
||||||
connection = get_connection(backend='django.core.mail.backends.smtp.EmailBackend')
|
connection = get_connection(backend='django.core.mail.backends.smtp.EmailBackend')
|
||||||
connection.open()
|
connection.open()
|
||||||
error = None
|
error = None
|
||||||
|
@ -44,7 +44,6 @@ def send_pending(bulk=100):
|
||||||
for retries, seconds in enumerate(settings.MAILER_DEFERE_SECONDS):
|
for retries, seconds in enumerate(settings.MAILER_DEFERE_SECONDS):
|
||||||
delta = timedelta(seconds=seconds)
|
delta = timedelta(seconds=seconds)
|
||||||
qs = qs | Q(retries=retries, last_retry__lte=now-delta)
|
qs = qs | Q(retries=retries, last_retry__lte=now-delta)
|
||||||
|
|
||||||
for message in Message.objects.filter(state=Message.DEFERRED).filter(qs).order_by('priority'):
|
for message in Message.objects.filter(state=Message.DEFERRED).filter(qs).order_by('priority'):
|
||||||
send_message(message, num, connection, bulk)
|
send_message(message, num, connection, bulk)
|
||||||
if connection is not None:
|
if connection is not None:
|
||||||
|
|
Loading…
Reference in a new issue