diff --git a/docs/howto/performance.rst b/docs/howto/performance.rst
index 68c642520..f87e405c0 100644
--- a/docs/howto/performance.rst
+++ b/docs/howto/performance.rst
@@ -13,7 +13,7 @@ We have tried to minimise external dependencies for a working installation of Wa
Cache
-----
-We recommend `Redis `_ as a fast, persistent cache. Install Redis through package manager and enable it as a cache backend::
+We recommend `Redis `_ as a fast, persistent cache. Install Redis through your package manager (on Debian or Ubuntu: ``sudo apt-get install redis-server``), add ``django-redis-cache`` to your requirements.txt, and enable it as a cache backend::
CACHES = {
'default': {
@@ -25,7 +25,22 @@ We recommend `Redis `_ as a fast, persistent cache. Install Re
}
}
-Without a persistent cache, Wagtail will recreate all compressable assets at each server start, e.g. when any files change under ```./manage.py runserver```.
+Without a persistent cache, Wagtail will recreate all compressable assets at each server start, e.g. when any files change under ``./manage.py runserver``.
+
+
+Sending emails in the background using Celery
+---------------------------------------------
+
+Various actions in the Wagtail admin backend can trigger notification emails - for example, submitting a page for moderation. In Wagtail's default configuration, these are sent as part of the page request/response cycle, which means that web server threads can get tied up for long periods if a large number of emails is being sent. To avoid this, Wagtail can be configured to do this as a background task, using `Celery `_ as a task queue. To install Celery, add ``django-celery`` to your requirements.txt. A sample configuration, using Redis as the queue backend, would look like::
+
+ import djcelery
+
+ djcelery.setup_loader()
+
+ CELERY_SEND_TASK_ERROR_EMAILS = True
+ BROKER_URL = 'redis://'
+
+See the Celery documentation for instructions on running the worker process in development or production.
Search