Thumbnail tag failed: (sorl-thumbnail 11.12)

2019-05-30 15:03发布

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"

1条回答
别忘想泡老子
2楼-- · 2019-05-30 15:42

I ran into this problem while working locally. It seemed to stop after I ran the management commands:

python manage.py thumbnail clear

followed by

python manage.py thumbnail cleanup
查看更多
登录 后发表回答