@@ -167,32 +167,45 @@ Async image processing
167167
168168 tasks.py
169169
170+
170171 .. code :: python
171172
172- from django.db.models.loading import get_model
173+ try:
174+ from django.apps import apps
175+ get_model = apps.get_model
176+ except ImportError:
177+ from django.db.models.loading import get_model
178+
179+ from celery import shared_task
180+
173181 from stdimage.utils import render_variations
174182
175- @app.task()
176- def process_image(app_label, model_name, field_name, file_name):
177- render_variations(app_label, model_name, field_name, file_name)
178- model_class = get_model(app_label, models_name )
179- obj = model_class .objects.get(**{field_name: file_name} )
183+
184+ @shared_task
185+ def process_photo_image(file_name, variations, storage):
186+ render_variations(file_name, variations, replace=True, storage=storage )
187+ obj = get_model('myapp', 'Photo') .objects.get(image= file_name)
180188 obj.processed = True
181189 obj.save()
182190
191+
183192 models.py
184193
185194 .. code :: python
186195
187196 from django.db import models
188197 from stdimage.models import StdImageField
198+ from stdimage.utils import UploadToClassNameDir
199+
200+ from tasks import process_photo_image
189201
190- def image_processor(**kwargs ):
191- process_image .delay(**kwargs )
202+ def image_processor(file_name, variations, storage ):
203+ process_photo_image .delay(file_name, variations, storage )
192204 return False # prevent default rendering
193205
194206 class AsyncImageModel(models.Model)
195207 image = StdImageField(
208+ # above task definition can only handle one model object per image filename
196209 upload_to=UploadToClassNameDir(),
197210 render_variations=image_processor # pass boolean or callable
198211 )
0 commit comments