首页 > 解决方案 > 上传/查看某些图片时出错 - 找不到再现 - django storages/ wagtail

问题描述

Wagtail 版本:2.9.2 Django 存储:==1.11.1

错误:

 2021-06-07 14:13:12 ERROR Internal Server Error: /admin/images/38/
 Traceback (most recent call last):
   File "/app/.heroku/python/lib/python3.7/site-packages/wagtail/images/models.py", line 300, in get_rendition
     focal_point_key=cache_key,
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/manager.py", line 82, in manager_method
     return getattr(self.get_queryset(), name)(*args, **kwargs)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/query.py", line 417, in get
     self.model._meta.object_name
 wagtail.images.models.Rendition.DoesNotExist: Rendition matching query does not exist.
 
 During handling of the above exception, another exception occurred:
 
 Traceback (most recent call last):
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/query.py", line 559, in get_or_create
     return self.get(**kwargs), False
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/query.py", line 417, in get
     self.model._meta.object_name
 wagtail.images.models.Rendition.DoesNotExist: Rendition matching query does not exist.
 
 During handling of the above exception, another exception occurred:
 
 Traceback (most recent call last):
   File "/app/.heroku/python/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
     response = get_response(request)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/core/handlers/base.py", line 145, in _get_response
     response = self.process_exception_by_middleware(e, request)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/core/handlers/base.py", line 143, in _get_response
     response = response.render()
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/response.py", line 105, in render
     self.content = self.rendered_content
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/response.py", line 83, in rendered_content
     return template.render(context, self._request)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/backends/django.py", line 61, in render
     return self.template.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 171, in render
     return self._render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
     return self.nodelist.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 936, in render
     bit = node.render_annotated(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
     return self.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/loader_tags.py", line 150, in render
     return compiled_parent._render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
     return self.nodelist.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 936, in render
     bit = node.render_annotated(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
     return self.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/loader_tags.py", line 150, in render
     return compiled_parent._render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
     return self.nodelist.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 936, in render
     bit = node.render_annotated(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
     return self.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/loader_tags.py", line 150, in render
     return compiled_parent._render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
     return self.nodelist.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 936, in render
     bit = node.render_annotated(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
     return self.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/loader_tags.py", line 62, in render
     result = block.nodelist.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 936, in render
     bit = node.render_annotated(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
     return self.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/loader_tags.py", line 62, in render
     result = block.nodelist.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 936, in render
     bit = node.render_annotated(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
     return self.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/defaulttags.py", line 209, in render
     nodelist.append(node.render_annotated(context))
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
     return self.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/defaulttags.py", line 309, in render
     return nodelist.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 936, in render
     bit = node.render_annotated(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
     return self.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/loader_tags.py", line 188, in render
     return template.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 173, in render
     return self._render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
     return self.nodelist.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 936, in render
     bit = node.render_annotated(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
     return self.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/loader_tags.py", line 188, in render
     return template.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 173, in render
     return self._render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
     return self.nodelist.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 936, in render
     bit = node.render_annotated(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
     return self.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/loader_tags.py", line 150, in render
     return compiled_parent._render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
     return self.nodelist.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 936, in render
     bit = node.render_annotated(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
     return self.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/loader_tags.py", line 62, in render
     result = block.nodelist.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 936, in render
     bit = node.render_annotated(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
     return self.render(context)
   File "/app/.heroku/python/lib/python3.7/site-packages/wagtail/images/templatetags/wagtailimages_tags.py", line 107, in render
     rendition = get_rendition_or_not_found(image, self.filter)
   File "/app/.heroku/python/lib/python3.7/site-packages/wagtail/images/shortcuts.py", line 13, in get_rendition_or_not_found
     return image.get_rendition(specs)
   File "/app/.heroku/python/lib/python3.7/site-packages/wagtail/images/models.py", line 329, in get_rendition
     defaults={'file': File(generated_image.f, name=output_filename)}
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py", line 682, in get_or_create
     return super(RelatedManager, self.db_manager(db)).get_or_create(**kwargs)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/manager.py", line 82, in manager_method
     return getattr(self.get_queryset(), name)(*args, **kwargs)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/query.py", line 562, in get_or_create
     return self._create_object_from_params(kwargs, params)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/query.py", line 596, in _create_object_from_params
     obj = self.create(**params)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/query.py", line 433, in create
     obj.save(force_insert=True, using=self.db)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/base.py", line 749, in save
     force_update=force_update, update_fields=update_fields)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/base.py", line 787, in save_base
     force_update, using, update_fields,
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/base.py", line 890, in _save_table
     results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/base.py", line 929, in _do_insert
     using=using, raw=raw,
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/manager.py", line 82, in manager_method
     return getattr(self.get_queryset(), name)(*args, **kwargs)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/query.py", line 1204, in _insert
     return query.get_compiler(using=using).execute_sql(returning_fields)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1393, in execute_sql
     for sql, params in self.as_sql():
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1338, in as_sql
     for obj in self.query.objs
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1338, in <listcomp>
     for obj in self.query.objs
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1337, in <listcomp>
     [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1288, in pre_save_val
     return field.pre_save(obj, add=True)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/fields/files.py", line 288, in pre_save
     file.save(file.name, file.file, save=False)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/fields/files.py", line 87, in save
     self.name = self.storage.save(name, content, max_length=self.field.max_length)
   File "/app/.heroku/python/lib/python3.7/site-packages/django/core/files/storage.py", line 52, in save
     return self._save(name, content)
   File "/app/.heroku/python/lib/python3.7/site-packages/storages/backends/dropbox.py", line 139, in _save
     self.client.files_upload(content.read(), self._full_path(name), mode=WriteMode(self.write_mode))
   File "/app/.heroku/python/lib/python3.7/site-packages/stone/backends/python_rsrc/stone_base.py", line 141, in __init__
     assert validator is not None, 'Invalid tag %r.' % tag
 AssertionError: Invalid tag True.

原因:

在图像面板中查看图像,上传图像等,但只有某些图像,网站加载非常好,这突然停止工作,不知道什么时候。

Dropbox 上肯定存在一些再现,仍有空间,API 密钥肯定有效,其他图像有效,只有一堆最近的不可用:

在此处输入图像描述

在此处输入图像描述

标签: pythondjangowagtail

解决方案


解决了,

原来 django-storages 有一个更新,其中添加了 DROPBOX_WRITE_MODE,或者它的行为改变了,我在 settigns.py 文件中有这一行:

DROPBOX_WRITE_MODE = True

代替:

DROPBOX_WRITE_MODE = "add"

当保管箱存储尝试将任何内容写入保管箱时触发错误,但读取有效


推荐阅读