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)

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