使用带有远程存储的sorl-thumbnails芹菜的指针?

Yuj*_*ita 10 python django amazon-s3 sorl-thumbnail celery

我很惊讶在搜索如何使用sorl-thumbnails和S3的芹菜任务时,除了"使用芹菜"之外什么都没看到.

问题:使用远程存储导致生成缩略图时出现大量延迟(对于包含许多缩略图的页面,请考虑100s +),而缩略图引擎从远程存储下载原始文件,对其进行处理,然后上传回s3.

在sorl内建立芹菜任务的好地方在哪里,我该怎么称呼?

任何您的经验/想法将不胜感激.

我将开始在Sorl内部挖掘,找到一个更有用的地方来推迟这项任务,但是如果以前已经解决了这个问题还有一些我很好奇的事情.

  1. 什么图像立即返回?必须以某种方式告诉Sorl返回的图像不是真正的缩略图.当celery完成任务时,缓存必须无效.

  2. 干净地处理多个缩略图生成请求(仅需要给定缓存键的第一个)

就目前而言,我暂时通过使用nginx反向代理缓存来解决这个问题,该缓存可以提供命中,同时后端花费时间生成昂贵的页面(在巨大的产品网格上调整大型PNG的大小),但这是一个非常手动的过程.

jte*_*ace 4

我认为您想要做的是将THUMBNAIL_BACKEND设置为覆盖_create_thumbnail方法的自定义类。不是在该函数中生成缩略图,而是启动一个 celery 任务,该任务使用与给该函数相同的参数调用 _create_thumbnail 。缩略图在请求期间不可用,但会在后台生成。