Ошибка при загрузке файлов из приложения Django в производстве с Gunicorn & Nginx
Я развернул свое приложение Django на AWS EC2 Instance, используя это руководство.
Все работает нормально, но ошибка возникает, когда я загружаю файл excel. (Excel создан с использованием библиотеки opnenpyxl
).
При загрузке xlsx
файла приложение возвращает download.htm
файл. Все отлично работает на сервере разработки.
Я пытался
- Добавление и удаление тега
download
.<a href="{% url 'download_estimate_excel_file' project.id project.name %}" class="dropdown-item" download> Download Excel </a>
. [Не сработало] .
- Добавление
[service] Environment="LANG=ru_RU.UTF-8"
в файл gunicorn.service (нашел это также на StackOverflow). [Не сработало]
Заранее спасибо.
Поскольку у нас нет логирования, я думаю, что было бы разумно реализовать некоторую обработку ошибок. Ниже вы найдете отличный пример из другого поста . Кроме того, я вижу, что вы открываете, добавляете и удаляете файлы из файловой системы. Более эффективно и менее подвержено ошибкам файловой системы работать с временными файлами и сохранять файлы в байтах, а не в файловой системе.
from django.http import HttpResponse, HttpResponseNotFound
def waprfile(request, date):
...
file_location = '/path/to/file/foo.xls'
try:
with open(file_location, 'r') as f:
file_data = f.read()
# sending response
response = HttpResponse(file_data, content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename="foo.xls"'
except IOError:
# handle file not exist case here
response = HttpResponseNotFound('<h1>File not exist</h1>')
return response