From ae2e18bd16bba87faaebf531992de65a42492224 Mon Sep 17 00:00:00 2001 From: gjb83 Date: Fri, 4 Jan 2013 13:51:34 +0000 Subject: [PATCH] Added section on Asynchronous Pregeneration --- docs/usage.rst | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/docs/usage.rst b/docs/usage.rst index 25a572b3..30615ed8 100644 --- a/docs/usage.rst +++ b/docs/usage.rst @@ -114,6 +114,44 @@ file), register one of these signal handlers. For example:: saved_file.connect(generate_aliases_global) +Asynchronous Pregeneration +-------------------------- + +For some use cases, it may not be necessary to have the relevant aliases +generated at the exact moment a file is uploaded. As an alternative, the +pregeneration task can be queued and executed by a background process. + +The following example uses `django-celery +`_ in conjunction with `Celery +`_ to achieve this. + +models.py:: + + from django.dispatch import receiver + from easy_thumbnails.signals import saved_file + from myapp import tasks + + @receiver(saved_file) + def generate_thumbnails_async(sender, fieldfile, **kwargs): + tasks.generate_thumbnails.delay( + model=sender, pk=fieldfile.instance.pk, + field=fieldfile.field.name) + +tasks.py:: + + from celery import task + from easy_thumbnails.files import generate_all_aliases + + @task + def generate_thumbnails(model, pk, field): + instance = model._default_manager.get(pk=pk) + fieldfile = getattr(instance, field) + generate_all_aliases(fieldfile, include_global=True) + +This results in a more responsive experience for the user, particularly +when dealing with large files and/or remote storage. + + Setting aliases for your third-party app ----------------------------------------