Как обработать удаление файла после возвращения ему ответа в фреймворке Django rest

В настоящее время я выполняю следующие шаги в своем DRF-коде.

1.Перехват имени файла в запросе 2.Поиск заданного имени файла на SFTP-сервере. 3. Если файл доступен на SFTP-сервере, скачивание его на локальный путь в папку "downloads"

  1. Returning the file as response with FileResponse

Теперь мне нужно удалить файл, который я скачал с SFTP или просто удалить все в папке downloads.

Какой подход будет лучшим для достижения этой цели? Как насчет асинхронной задачи celery перед возвратом FileResponse.

Помогите мне с лучшим подходом для этого

Одним из способов решения этой проблемы является использование модуля Python tempfile, который предоставляет временные файлы, которые автоматически удаляются при удалении всех ссылок в Python.

Вот пример из документации:

>>> import tempfile

# create a temporary file and write some data to it
>>> fp = tempfile.TemporaryFile()
>>> fp.write(b'Hello world!')
# read data from file
>>> fp.seek(0)
>>> fp.read()
b'Hello world!'
# close the file, it will be removed
>>> fp.close()

Получив объект файла, вы можете использовать FileResponse для отправки его обратно клиенту.

Альтернативным способом может быть использование cronjob для удаления файлов старее определенного количества дней.

Вернуться на верх