Сервер Django отключается при добавлении нескольких записей в базу данных SQLite3 через POSTPython

Программы на Python
Ответить
Anonymous
 Сервер Django отключается при добавлении нескольких записей в базу данных SQLite3 через POST

Сообщение Anonymous »

Я пытаюсь добавить несколько записей для заполнения базы данных SQLite3 из запроса POST.
Всего имеется около 2000 записей, но каждый раз, когда я выполняю запрос POST, сервер выключается (без вывода ошибок в консоли или браузере).
Общий размер записей не превышает 200КБ, но сервер всегда падает после обработки 334 записей (если я загружаю по одному один) или 300 записей (если я загружаю пакетами по 100).
Я попробовал изменить "DATA_UPLOAD_MAX_NUMBER_FIELDS" (каждая запись модели имеет 20 параметров) на 10 000, чтобы быть уверенным, "DATA_UPLOAD_MAX_MEMORY_SIZE " и "FILE_UPLOAD_MAX_MEMORY_SIZE до 25 МБ, но это похоже, не имеет никакого эффекта. Это также не дает мне никаких ошибок, которые помогли бы мне понять проблему.
Это моя структура кода:
views.py (перед завершением работы загружается 334 записи)

Код: Выделить всё

def settings(request):
if request.method == "POST" and "update_report" in request.POST:

Item.objects.all().delete()

from xxx import items

try:
for item in items:
Item.objects.create(
propertyA = item.get('A'),
propertyB = item.get('B'),
propertyC = item.get('C'))
except IntegrityError as e:
print(f"Integrity error: {e}")

template = loader.get_template("xxxx\yyyy.html")
context = {some context}

return HttpResponse(template.render(context, request))

views.py (эта другая попытка загрузить только 300 элементов перед закрытием)

Код: Выделить всё

def settings(request):
if request.method == "POST" and "update_report" in request.POST:

Item.objects.all().delete()

from xxx import items

items_list = [Item(propertyA = item.get('A'),
propertyB = item.get('B'),
propertyC = item.get('C'))
for item in items]

chunk_size = 100

try:
for i in range(0, len(items_list), chunk_size):
Item.objects.bulk_create(items_list[i:i+chunk_size])
except IntegrityError as e:
print(f"Integrity error: {e}")

template = loader.get_template("xxxx\yyyy.html")
context = {some context}

return HttpResponse(template.render(context, request))

html-код

Код: Выделить всё

....

{% csrf_token %}
Update report>/button>

....
settings.py (из chezwite — Расположение журналов и ошибок Django)

Код: Выделить всё

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'debug.log',
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
},
}
debug.log (последние строки)

Код: Выделить всё

(0.000) INSERT INTO "my_app_item" ("propertyA", "propertyB", "propertyC") VALUES ("AAA", "AAA", "AAA")....
(0.000) INSERT INTO "my_app_item" ("propertyA", "propertyB", "propertyC") VALUES ("BBB", "AAA", "AAA")....
(0.000) INSERT INTO "my_app_item" ("propertyA", "propertyB", "propertyC") VALUES ("CCC", "CCC", "CCC")....
спасибо

Подробнее здесь: https://stackoverflow.com/questions/791 ... ase-via-po
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»