Dajngo CSV FIle не загружается? Когда у нас есть большой CSV файл загрузка занимает некоторое время? Django 502 bad gateway nginx error Django
Как загрузить большой CSV-файл, который показывает мне ошибку 502 bad gateway? Я получил это решение, которое я добавил ниже. На самом деле, в этом случае мы используем потоковые ссылки. В этой концепции, например, мы загружаем фильм, он будет загружаться в браузере и показывать статус, когда он будет завершен, это даст возможность показать в папке, как и то, что CSV файл загружается полностью, это покажет нам.
Для решения этой ошибки есть одно решение - увеличить время работы nginx, но это повлияет на стоимость, поэтому лучше использовать потоковое вещание Django. Потоковое вещание - это как пример, когда мы добавляем фильм для скачивания, он скачивается в браузере. Эта концепция используется в Django streaming.
Напишите представление для этого в Django. views.py
from django.http import StreamingHttpResponse
503_ERROR = 'something went wrong.'
DASHBOARD_URL = 'path'
def get_headers():
return ['field1', 'field2', 'field3']
def get_data(item):
return {
'field1': item.field1,
'field2': item.field2,
'field3': item.field3,
}
class CSVBuffer(object):
def write(self, value):
return value
class Streaming_CSV(View):
""" Streaming CSV. """
model = Model_Name
queryset = Model_Name.objects.all()
def get(self, request, *args, **kwargs):
try:
response = StreamingHttpResponse(streaming_content=(iter_items(queryset, CSVBuffer())), content_type='text/csv', )
file_name = 'Experience_data_%s' % (str(datetime.datetime.now()))
response['Content-Disposition'] = 'attachment;filename=%s.csv' % (file_name)
exception Except as e:
messages.error(request, ERROR_503)
return redirect(DASHBOARD_URL)
return response
urls.py
path('streaming-csv/',views.Streaming_CSV.as_view(),name = 'streaming-csv')
Для справки используйте следующие ссылки. https://docs.djangoproject.com/en/4.0/howto/outputting-csv/#streaming-large-csv-files
GIT. https://gist.github.com/niuware/ba19bbc0169039e89326e1599dba3a87
GIT Добавление строк вручную в StreamingHttpResponse (Django)