Python Django缓存图像



所以我已经阅读了Django文档中关于缓存的内容,并了解到我可以按视图缓存数据,这正是我想要做的。我有一个类似的URL:www.mysite.com/related_images/{image_id}。其计算所选择的{image_id}的相关图像,并将它们保存到磁盘。问题是,我不希望这些图像永远留在那里,但现在我的视图将它们保存到磁盘上,而不进行任何缓存,我如何确保通过缓存视图一段时间,当缓存到期时,视图创建的任何文件都会被删除?。

或者,如果你对我的问题有更好的解决方案,我愿意接受你的想法。有没有一种方法可以将缓存中的图像注入到模板中,而无需将其保存在磁盘上并显式地为html提供路径?

这是视图的简化版本:

def related_image(request, pk):
    original = get_object_or_404(Image, pk=pk)
    images = original.get_previous_views()
    for im in images:
        path = '/some/dir/'+str(im.id)+'.jpg'
        calculated_image = calculate(im,original)
        file = open(path)
        file.write(calculated_image)
        im.file_path = path
    return render_to_response('app/related_image.html', {'images': images})

感谢:)

一种解决方案是查看文件元数据的最后修改日期,并将其与设置的到期期限进行比较。

例如:

import os
expiration_seconds = 3600
last_modified_time = os.path.getmtime(file_path)  # i.e. 1223995325.0
# that returns a float with the time of last modification since epoch, 
# so there's some logic to do to determine time passed since then.
if time_since_last_modified >= expiration_seconds:
    # delete the file
    os.remove(file_path)
    # then do your logic to get the file again

相关内容

  • 没有找到相关文章

最新更新