Вопрос относительно Django - IIS - Postgres
Недавно я создал свое первое настоящее веб-приложение для "работы", используя Django. Я использую Postgres для базы данных бэкенда. Я также размещаю свое приложение и базу данных на одном сервере Windows 2019. IIS - это инструмент, который я использую для размещения моего веб-приложения.
По сути, моя проблема заключается в том, что когда я использую свой сайт в продакшене, количество экспортированных записей в csv не совпадает с количеством отфильтрованных записей в поиске. Иногда это работает, но обычно, когда количество строк меньше. Проблема обычно возникает, если количество строк исчисляется десятками тысяч (показано на скриншоте).
Моя догадка заключается в том, что это связано с некоторыми сетевыми настройками в IIS, но я могу ошибаться. Все прекрасно работает, когда я просто запускаю localhost. Я не слишком хорошо знаю, какие настройки базы данных или IIS должны быть установлены, чтобы обеспечить оптимальную производительность.
На моем сервере 16 ГБ оперативной памяти и 8-ядерный процессор, поэтому я не думаю, что проблема в этом, но я могу ошибаться. В моей базе данных около 8 миллионов строк, так что определенно есть много данных для просмотра.
Ниже приведен код моего представления export_to_csv. Я использую StreamingHttpResponse, что и рекомендует Django. Заранее спасибо всем! Я в тупике и мне нужна любая помощь.
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