Django email backend with AWS SES and Celery

Overview

Django Celery SES

PyPI Version Build Status Coverage Status

Django Email Backend with Amazon Web Service SES and Celery, developed and used by StreetVoice.

This packages provide a EmailBackend to utilize django-celery to send email. You can just plug the EmailBackend in your project without any modify with your code.

Since Amazon SES requires you to handle Bounce email from SNS notification, django-celery-ses also provides view to handle SNS notification for email address which is blacklisted in Amazon SES.

What is provided

  1. Celery EmailBackend
  2. SNS notification handler
  3. Blacklist to handle Bounce email

Installation

  1. Install from pip / easy_install
$ pip install django-celery-ses
  1. Add djcelery_ses to INSTALLED_APPS in settings.py
INSTALLED_APPS = (
    ...
    'djcelery_ses',
    ...
)
  1. migrate the database with South ( you have to install South )
$ ./manage.py migrate
  1. Change the EMAIL_BACKEND
EMAIL_BACKEND = 'djcelery_ses.backends.CeleryEmailBackend'
  1. Add djcelery_ses in urls.py
urlpatterns = patterns('',
    ...
    (r'^djcelery_ses/', include('djcelery_ses.urls')),
    ...
)

Configuration

django-celery-ses uses Amazon SES through SMTP, so you have add EMAIL_* configuration in settings.py

EMAIL_USE_TLS = True
EMAIL_HOST = 'email-smtp.us-east-1.amazonaws.com'
EMAIL_HOST_USER = '<YOUR_AWS_ACCESS_KEY_ID>'
EMAIL_HOST_PASSWORD = '<YOUR_AWS_SECRET_ACCESS_KEY>'
EMAIL_PORT = 587

SERVER_EMAIL = 'StreetVoice <[email protected]>'
DEFAULT_FROM_EMAIL = 'StreetVoice <[email protected]>'

Besides these settings, you also have to setting the SES / SNS on AWS to make this package handle bounce mail for you.

How to use

All you have to do is use send_mail or EmailMessage just like the old time, you don't have to change your code.

Utilities

This package handle Blacklist for you by default, but sometimes, maybe you want to bypass the "blacklist check", you can use pass_blacklist to pass the "backlist check" like this.

from djcelery_ses.utils import pass_blacklist
from django.core.mail import EmailMessage

with pass_blacklist:
    msg = EmailMessage('title', 'body content', '[email protected]', ['[email protected]'])
    msg.send()

or in some situations, you don't want the email to send through Celery queue, you can use no_delay, for example.

since version 0.9

from djcelery_ses.utils import no_delay
from django.core.mail import send_mail

with no_delay:
    send_mail('title', 'body content', '[email protected]', ['[email protected]'])

with no_delay your email will send out directly without Celey queue.

Test

In order to ensure your changed which can pass in local environment, please run the script:

make test
Owner
StreetVoice
StreetVoice
OpenQueue is a experimental CS: GO match system written in asyncio python.

What is OpenQueue OpenQueue is a experimental CS: GO match system written in asyncio python. Please star! This project was a lot of work & still has a

OpenQueue 10 May 13, 2022
A fast and reliable background task processing library for Python 3.

dramatiq A fast and reliable distributed task processing library for Python 3. Changelog: https://dramatiq.io/changelog.html Community: https://groups

Bogdan Popa 3.4k Jan 01, 2023
SAQ (Simple Async Queue) is a simple and performant job queueing framework built on top of asyncio and redis

SAQ SAQ (Simple Async Queue) is a simple and performant job queueing framework built on top of asyncio and redis. It can be used for processing backgr

Toby Mao 117 Dec 30, 2022
Mr. Queue - A distributed worker task queue in Python using Redis & gevent

MRQ MRQ is a distributed task queue for python built on top of mongo, redis and gevent. Full documentation is available on readthedocs Why? MRQ is an

Pricing Assistant 871 Dec 25, 2022
A fully-featured e-commerce application powered by Django

kobbyshop - Django Ecommerce App A fully featured e-commerce application powered by Django. Sections Project Description Features Technology Setup Scr

Kwabena Yeboah 2 Feb 15, 2022
Django email backend with AWS SES and Celery

Django Celery SES Django Email Backend with Amazon Web Service SES and Celery, developed and used by StreetVoice. This packages provide a EmailBackend

StreetVoice 30 Oct 24, 2022
Queuing with django celery and rabbitmq

queuing-with-django-celery-and-rabbitmq Install Python 3.6 or above sudo apt-get install python3.6 Install RabbitMQ sudo apt-get install rabbitmq-ser

1 Dec 22, 2021
Beatserver, a periodic task scheduler for Django 🎵

Beat Server Beatserver, a periodic task scheduler for django channels | beta software How to install Prerequirements: Follow django channels documenta

Raja Simon 130 Dec 17, 2022
Distributed Task Queue (development branch)

Version: 5.1.0b1 (singularity) Web: https://docs.celeryproject.org/en/stable/index.html Download: https://pypi.org/project/celery/ Source: https://git

Celery 20.7k Jan 01, 2023
Clearly see and debug your celery cluster in real time!

Clearly see and debug your celery cluster in real time! Do you use celery, and monitor your tasks with flower? You'll probably like Clearly! 👍 Clearl

Rogério Sampaio de Almeida 364 Jan 02, 2023
Distributed Task Queue (development branch)

Version: 5.0.5 (singularity) Web: http://celeryproject.org/ Download: https://pypi.org/project/celery/ Source: https://github.com/celery/celery/ Keywo

Celery 20.7k Jan 02, 2023
FastAPI with Celery

Minimal example utilizing fastapi and celery with RabbitMQ for task queue, Redis for celery backend and flower for monitoring the celery tasks.

Grega Vrbančič 371 Jan 01, 2023
Simple job queues for Python

Hypothesis Hypothesis is a family of testing libraries which let you write tests parametrized by a source of examples. A Hypothesis implementation the

RQ 8.7k Jan 07, 2023
Pyramid configuration with celery integration. Allows you to use pyramid .ini files to configure celery and have your pyramid configuration inside celery tasks.

Getting Started Include pyramid_celery either by setting your includes in your .ini, or by calling config.include('pyramid_celery'): pyramid.includes

John Anderson 102 Dec 02, 2022
Sync Laravel queue with Python. Provides an interface for communication between Laravel and Python.

Python Laravel Queue Queue sync between Python and Laravel using Redis driver. You can process jobs dispatched from Laravel in Python. NOTE: This pack

Sinan Bekar 3 Oct 01, 2022
Add you own metrics to your celery backend

Add you own metrics to your celery backend

Gandi 1 Dec 16, 2022
Dagon - An Asynchronous Task Graph Execution Engine

Dagon - An Asynchronous Task Graph Execution Engine Dagon is a job execution sys

8 Nov 17, 2022
Flower is a web based tool for monitoring and administrating Celery clusters.

Real-time monitor and web admin for Celery distributed task queue

Mher Movsisyan 5.5k Jan 02, 2023
a little task queue for python

a lightweight alternative. huey is: a task queue (2019-04-01: version 2.0 released) written in python (2.7+, 3.4+) clean and simple API redis, sqlite,

Charles Leifer 4.3k Jan 08, 2023
Asynchronous tasks in Python with Celery + RabbitMQ + Redis

python-asynchronous-tasks Setup & Installation Create a virtual environment and install the dependencies: $ python -m venv venv $ source env/bin/activ

Valon Januzaj 40 Dec 03, 2022