I keep getting strange errors from sorl-thumbnail in my production environment (using Sentry as a logger). They all just say Thumbnail tag failed:
(which is oh-so-uber-helpful), and they all come from one of three modules.
The weird thing is that it doesn't actually affect the site. Pages load fine, and even the thumbnails load fine. It's really only a concern because I'm tired of seeing the errors show up in my list in my Sentry dashboard. However, I can't make heads or tails out of why the errors are generated, or how to fix them. I'm starting to wonder if they aren't just standard behavior mixed with overly verbose logging, since like I said, there's no noticeable effect on the site.
Perhaps someone here can shed more light on it, so here's the stacktraces.
UPDATE #1
For the one from sorl.thumbnail.engines.pil_engine._orientation
, I found the following likely candidate: http://blog.yawd.eu/2012/fix-sorlthumbnail-engines-pil-orientation-error/
From sorl.thumbnail.images.deserialize_image_file
:
Thumbnail tag failed:
Stacktrace (most recent call last):
File "sorl/thumbnail/templatetags/thumbnail.py", line 49, in render
logger.error('Thumbnail tag failed:', exc_info=sys.exc_info())
File "sorl/thumbnail/templatetags/thumbnail.py", line 97, in _render
file_, geometry, **options
File "sorl/thumbnail/base.py", line 65, in get_thumbnail
default.kvstore.get_or_set(source)
File "sorl/thumbnail/kvstores/base.py", line 46, in get_or_set
cached = self.get(image_file)
File "sorl/thumbnail/kvstores/base.py", line 25, in get
return self._get(image_file.key)
File "sorl/thumbnail/kvstores/base.py", line 127, in _get
return deserialize_image_file(value)
File "sorl/thumbnail/images.py", line 31, in deserialize_image_file
data = simplejson.loads(s)
File "simplejson/__init__.py", line 428, in loads
return _default_decoder.decode(s)
File "simplejson/decoder.py", line 402, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "simplejson/decoder.py", line 420, in raw_decode
raise JSONDecodeError("No JSON object could be decoded", s, idx)
From sorl.thumbnail.images.read
:
Thumbnail tag failed:
Stacktrace (most recent call last):
File "sorl/thumbnail/templatetags/thumbnail.py", line 49, in render
logger.error('Thumbnail tag failed:', exc_info=sys.exc_info())
File "sorl/thumbnail/templatetags/thumbnail.py", line 97, in _render
file_, geometry, **options
File "sorl/thumbnail/base.py", line 56, in get_thumbnail
source_image = default.engine.get_image(source)
File "sorl/thumbnail/engines/pil_engine.py", line 12, in get_image
buf = StringIO(source.read())
File "sorl/thumbnail/images.py", line 121, in read
return self.storage.open(self.name).read()
File "django/core/files/storage.py", line 33, in open
file = self._open(name, mode)
File "django/core/files/storage.py", line 159, in _open
return File(open(self.path(name), mode))
From sorl.thumbnail.engines.pil_engine._orientation
:
Thumbnail tag failed:
Stacktrace (most recent call last):
File "sorl/thumbnail/templatetags/thumbnail.py", line 49, in render
logger.error('Thumbnail tag failed:', exc_info=sys.exc_info())
File "sorl/thumbnail/templatetags/thumbnail.py", line 97, in _render
file_, geometry, **options
File "sorl/thumbnail/base.py", line 61, in get_thumbnail
thumbnail)
File "sorl/thumbnail/base.py", line 86, in _create_thumbnail
image = default.engine.create(source_image, geometry, options)
File "sorl/thumbnail/engines/base.py", line 15, in create
image = self.orientation(image, geometry, options)
File "sorl/thumbnail/engines/base.py", line 26, in orientation
return self._orientation(image)
File "sorl/thumbnail/engines/pil_engine.py", line 31, in _orientation
exif = None
File "PIL/JpegImagePlugin.py", line 381, in _getexif
info.load(file)
File "PIL/TiffImagePlugin.py", line 382, in load
raise IOError, "not enough data"