sorl-thumbnail ThumbnailException克隆EC2实例后出错

时间:2013-04-29 18:32:28

标签: python django amazon-ec2 sorl-thumbnail

我克隆了一个正在运行的EC2实例来创建一个辅助登台服务器。除了sorl-thumbnail之外,一切都正常。

在我描述我收到的错误之前,我认为描述我正在使用的堆栈可能会有所帮助。它涉及3个EC2实例;与Nginx和Gunicorn一起运行django的app服务器;运行MySQL和Redis的数据库;和运行Nginx的媒体服务器。应用服务器使用NFS在本地从媒体服务器安装媒体目录。所有适当的端口都在AWS中打开,并且应用服务器已在媒体服务器上添加了/ etc / exports。

关于我看到的问题...应该由sorl-thumbnail生成的所有图像的img src属性为空。当我看看我的django应用程序的日志时,我会看到每个丢失图像的条目:

[04/29/2013 13:11:54] DEBUG   : Could not find thumbnail image for rendering </media/images/12345.jpg>
ThumbnailException: Source file: '/images/12345.jpg' does not exist.
[04/29/2013 13:11:54] DEBUG   : Could not retrieve image for </media/images/12345.jpg>

然而,12345.jpg确实存在/ media / images /.

我周五的大部分时间都试图解决这个问题无济于事。有没有人遇到这样的事情?

1 个答案:

答案 0 :(得分:1)

生成的数据(如图像缩略图)通常存储在(相对)临时文件系统位置,How sorl-thumbnail operates表示相同:

  

使用缩略图模板标签时,sorl-thumbnail会查找   密钥值存储区中的缩略图。生成缩略图的键   从它的文件名和存储。 [...] 值得注意的是,sorl-thumbnail不会检查是否   如果在密钥中找到缩略图密钥,则存在源或缩略图   超值商店。

     

注意:这意味着如果您更改或删除源文件或删除   thumbnail,sorl-thumbnail仍会从Key Value Store中获取。   因此,重要的是,如果您删除或更改源或   缩略图文件通知密钥值存储。

     

[强调我的]

现在,Amazon EC2个实例通常具有两种不同的存储类型,即在克隆实例时复制的持久Amazon Elastic Block Store (Amazon EBS)卷,以及Amazon EC2 Instance Store卷(通常称为how to take backup of aws ec2 instance/ephemeral storage?临时存储),克隆实例时会丢失;请参阅我对{{3}}的回答,了解有关此差异/问题的更多信息。

所以大概是你的缩略图已存储在短暂的卷上,现在需要相应地生成。