【问题标题】:Check if sorl thumbnail has already cached an image using the low level API检查 sorl 缩略图是否已经使用低级 API 缓存了图像
【发布时间】:2014-01-10 11:52:43
【问题描述】:

Sorl thumbnail 有一个低级 API,允许您执行以下操作,例如:

from sorl.thumbnail import get_thumbnail
im = get_thumbnail(my_file, '100x100', crop='center', quality=99)

这将返回对缓存文件的引用。如果它已经创建,它会超级快。但是,如果必须是第一次创建它,则使用 S3 等远程存储可能需要很长时间。

有没有办法在 Python 中运行命令(即不在模板中)来检查 sorl 是否必须第一次生成缩略图?

PS。我知道here 的类似问题,但这是在模板上下文中询问它,并且有一个hacky 解决方案作为使用自定义SQL 而不是sorl API 的答案。

【问题讨论】:

    标签: python django caching sorl-thumbnail


    【解决方案1】:

    在我的版本sorl.thumbnail11.12中,方法get_thumbnail定义在sorl.thumbnail.base.py中,开头如下:

    def get_thumbnail(self, file_, geometry_string, **options):
        """..."""
        source = ImageFile(file_)
        for key, value in self.default_options.iteritems():
            options.setdefault(key, value)
        # ...
        for key, attr in self.extra_options:
            value = getattr(settings, attr)
            if value != getattr(default_settings, attr):
                options.setdefault(key, value)
        name = self._get_thumbnail_filename(source, geometry_string, options)
        thumbnail = ImageFile(name, default.storage)
        cached = default.kvstore.get(thumbnail)
        if cached:
            return cached
        if not thumbnail.exists():
            ...
    

    如果您使用此代码并返回类似的内容

    cached or thumbnail.exists()
    

    这应该会给你想要的结果。

    【讨论】:

      猜你喜欢
      • 2012-11-18
      • 2011-10-29
      • 2011-07-18
      • 2011-11-19
      • 1970-01-01
      • 2016-03-01
      • 2013-11-11
      • 2015-12-01
      • 1970-01-01
      相关资源
      最近更新 更多