mirror of
https://github.com/Hopiu/django-imagekit.git
synced 2026-03-16 21:30:23 +00:00
Add async cachefile backend
This commit is contained in:
parent
86cd23e906
commit
728368abf6
3 changed files with 34 additions and 1 deletions
|
|
@ -45,7 +45,6 @@ class ImageCacheFile(BaseIKFile, ImageFile):
|
|||
|
||||
def _require_file(self):
|
||||
before_access.send(sender=self, file=self)
|
||||
return super(ImageCacheFile, self)._require_file()
|
||||
|
||||
def generate(self, force=False):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -101,3 +101,34 @@ class Simple(CachedFileBackend):
|
|||
def _exists(self, file):
|
||||
return bool(getattr(file, '_file', None)
|
||||
or file.storage.exists(file.name))
|
||||
|
||||
|
||||
def _generate_file(backend, file):
|
||||
file._generate()
|
||||
backend.set_state(file, CacheFileState.EXISTS)
|
||||
|
||||
|
||||
try:
|
||||
import celery
|
||||
except ImportError:
|
||||
pass
|
||||
else:
|
||||
_generate_file = celery.task(ignore_result=True)(_generate_file)
|
||||
|
||||
|
||||
class Async(Simple):
|
||||
"""
|
||||
A backend that uses Celery to generate the images.
|
||||
"""
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
try:
|
||||
import celery
|
||||
except ImportError:
|
||||
raise ImproperlyConfigured('You must install celery to use'
|
||||
' imagekit.cachefiles.backend.Async.')
|
||||
super(Async, self).__init__(*args, **kwargs)
|
||||
|
||||
def _generate(self, file):
|
||||
self.set_state(file, CacheFileState.PENDING)
|
||||
_generate_file.delay(self, file)
|
||||
|
|
|
|||
3
setup.py
3
setup.py
|
|
@ -52,6 +52,9 @@ setup(
|
|||
'django-appconf>=0.5',
|
||||
'pilkit',
|
||||
],
|
||||
extras_require={
|
||||
'async': ['django-celery>=3.0'],
|
||||
},
|
||||
classifiers=[
|
||||
'Development Status :: 5 - Production/Stable',
|
||||
'Environment :: Web Environment',
|
||||
|
|
|
|||
Loading…
Reference in a new issue