Вопрос относительно Django - IIS - Postgres

Недавно я создал свое первое настоящее веб-приложение для "работы", используя Django. Я использую Postgres для базы данных бэкенда. Я также размещаю свое приложение и базу данных на одном сервере Windows 2019. IIS - это инструмент, который я использую для размещения моего веб-приложения.

По сути, моя проблема заключается в том, что когда я использую свой сайт в продакшене, количество экспортированных записей в csv не совпадает с количеством отфильтрованных записей в поиске. Иногда это работает, но обычно, когда количество строк меньше. Проблема обычно возникает, если количество строк исчисляется десятками тысяч (показано на скриншоте).

Моя догадка заключается в том, что это связано с некоторыми сетевыми настройками в IIS, но я могу ошибаться. Все прекрасно работает, когда я просто запускаю localhost. Я не слишком хорошо знаю, какие настройки базы данных или IIS должны быть установлены, чтобы обеспечить оптимальную производительность.

На моем сервере 16 ГБ оперативной памяти и 8-ядерный процессор, поэтому я не думаю, что проблема в этом, но я могу ошибаться. В моей базе данных около 8 миллионов строк, так что определенно есть много данных для просмотра.

Ниже приведен код моего представления export_to_csv. Я использую StreamingHttpResponse, что и рекомендует Django. Заранее спасибо всем! Я в тупике и мне нужна любая помощь.

enter image description here

class Echo(object):
    """An object that implements just the write method of the file-like
    interface.
    """
    def write(self, value):
        """Write the value by returning it, instead of storing in a buffer."""
        return value

def export_to_csv(request):
    all_objects = DeviceVulns.objects.all()
    url = request.GET.get('filter_url')
    query = urlsplit(url).query
    params = dict(parse_qs(query))
    params_dict = {k: v[0] for k, v in params.items()}
    #print(params_dict)
    filter = DeviceVulnsFilter(params_dict,queryset=all_objects).qs
    filter_list = list(filter.values_list())
    #insert headers into beginning of list
    filter_list[:0] = [['ID','Hostname', 'IP Address', 'OS_Name', 'Vuln Title','CVSS Score','Vuln Earliest Found Date On Asset','Vuln Exploitable?','Vuln Exploit Skill Level']]
    pseudo_buffer = Echo()
    writer = csv.writer(pseudo_buffer)
    response = StreamingHttpResponse((writer.writerow(
        [item[1], item[2], item[3],
         item[4], item[5],item[6],item[7],item[8]]) for item in filter_list),
                                     content_type="text/csv")
    response['Content-Disposition'] = 'attachment; filename="filtered-data.csv"'
    return response
Вернуться на верх