Skip to content

Commit df19b77

Browse files
committed
send emails async via Celery
1 parent 7f3533f commit df19b77

File tree

5 files changed

+33
-3
lines changed

5 files changed

+33
-3
lines changed

Diff for: .gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ node_modules/
2222
/develop/playbook.retry
2323
develop/tools/*.csv
2424
.vscode/
25+
celerybeat-schedule

Diff for: docker-compose.yml

+24
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ version: '3'
22

33
volumes:
44
pgdata:
5+
redisdata:
56

67
services:
78
db:
@@ -11,16 +12,39 @@ services:
1112
- "5432:5432"
1213
volumes:
1314
- pgdata:/var/lib/postgresql/data/
15+
redis:
16+
image: redis
17+
restart: always
18+
ports:
19+
- "6379:6379"
20+
volumes:
21+
- redisdata:/var/lib/redis/
1422
web:
1523
build: .
1624
command: python manage.py runserver 0.0.0.0:8000
1725
environment:
1826
- DB_NAME=postgres
1927
- DB_USER=postgres
2028
- DB_HOST=db
29+
- REDIS_HOST=redis
2130
volumes:
2231
- .:/code
2332
ports:
2433
- "8000:8000"
2534
depends_on:
2635
- db
36+
- redis
37+
worker:
38+
build: .
39+
command: celery -A pycon worker --autoreload --beat
40+
environment:
41+
- C_FORCE_ROOT=1
42+
- DB_NAME=postgres
43+
- DB_USER=postgres
44+
- DB_HOST=db
45+
- REDIS_HOST=redis
46+
volumes:
47+
- .:/code
48+
depends_on:
49+
- db
50+
- redis

Diff for: pycon/settings/base.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ def env_or_default(NAME, default):
207207
"selectable",
208208
"multi_email_field",
209209
"email_log",
210+
"djcelery_email",
210211

211212
# symposion
212213
"symposion.conference",
@@ -237,7 +238,8 @@ def env_or_default(NAME, default):
237238

238239
MESSAGE_STORAGE = "django.contrib.messages.storage.session.SessionStorage"
239240

240-
EMAIL_BACKEND = 'email_log.backends.EmailBackend'
241+
EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'
242+
CELERY_EMAIL_BACKEND = 'email_log.backends.EmailBackend'
241243
EMAIL_LOG_BACKEND = "django.core.mail.backends.console.EmailBackend"
242244

243245
ACCOUNT_OPEN_SIGNUP = True
@@ -339,7 +341,8 @@ def env_or_default(NAME, default):
339341

340342

341343
# Celery
342-
BROKER_URL = 'redis://localhost:6379/0' # Redis DB 0 for Celery. (Cache will use DB 1)
344+
REDIS_HOST = os.environ.get('REDIS_HOST', 'localhost')
345+
BROKER_URL = 'redis://{}:6379/0'.format(REDIS_HOST) # Redis DB 0 for Celery. (Cache will use DB 1)
343346
# We deliberately do not set CELERY_RESULT_BACKEND because we are discarding results.
344347
# Pickle is fine, our redis is only accessible on localhost
345348
CELERY_ACCEPT_CONTENT = ['pickle']

Diff for: pycon/settings/server.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@
3434
MANAGERS = ADMINS
3535

3636
# Yes, send email
37-
EMAIL_BACKEND = 'email_log.backends.EmailBackend'
37+
EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'
38+
CELERY_EMAIL_BACKEND = 'email_log.backends.EmailBackend'
3839
EMAIL_LOG_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
3940
EMAIL_HOST = env_or_default("EMAIL_HOST", "")
4041

Diff for: requirements/base.txt

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ django-uni-form==0.9.0
2929
requests==2.0.0
3030
bleach==1.4
3131

32+
django-celery-email==2.0.0
3233
django-email-log==0.2.0
3334
django-multi-email-field==0.3.1
3435

0 commit comments

Comments
 (0)