Python-Django Кэширование изображений

Итак, я прочитал Django-Docs о кэшировании и понял, что могу кэшировать данные для каждого представления, что я и хочу делать. У меня есть такой URL-адрес: www.mysite.com/related_images/advanimage_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})

Спасибо:)

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
Другие вопросы по тегам