Как обработать удаление файла после возвращения ему ответа в фреймворке Django rest
В настоящее время я выполняю следующие шаги в своем DRF-коде.
1.Перехват имени файла в запросе 2.Поиск заданного имени файла на SFTP-сервере. 3. Если файл доступен на SFTP-сервере, скачивание его на локальный путь в папку "downloads"
- 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 для удаления файлов старее определенного количества дней.