Python-Django缓存图像

时间:2015-11-09 10:41:50

标签: python django caching django-caching

所以我已经阅读了关于缓存的Django-Docs,并且理解我可以根据视图缓存数据,这是我想要做的。我有这样的网址: 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})

谢谢:)

1 个答案:

答案 0 :(得分:0)

一种解决方案是查看文件上次修改日期的元数据,并将其与设置的有效期进行比较。

例如:

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