Django Login внезапно перестал работать - тайминг аут
Мой проект Django прекрасно работал в течение последних 90 дней. За это время не было развертывания нового кода.
Запуск супервизора -> gunicorn для обслуживания приложения и фронтального nginx.
К сожалению, он просто перестал обслуживать страницу входа в систему (стандартный логин фреймворка).
Я написал небольшое представление, которое проверяет, работает ли соединение с БД, и оно появляется в течение нескольких секунд.
def updown(request):
from django.shortcuts import HttpResponse
from django.db import connections
from django.db.utils import OperationalError
status = True
# Check database connection
if status is True:
db_conn = connections['default']
try:
c = db_conn.cursor()
except OperationalError:
status = False
error = 'No connection to database'
else:
status = True
if status is True:
message = 'OK'
elif status is False:
message = 'NOK' + ' \n' + error
return HttpResponse(message)
Это возвращает OK.
Но как только я пытаюсь зайти в /admin или куда-либо еще, где требуется логин, он отключается.
wget http://127.0.0.1:8000
--2022-07-20 22:54:58-- http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response... 302 Found
Location: /business/dashboard/ [following]
--2022-07-20 22:54:58-- http://127.0.0.1:8000/business/dashboard/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response... 302 Found
Location: /account/login/?next=/business/dashboard/ [following]
--2022-07-20 22:54:58-- http://127.0.0.1:8000/account/login/? next=/business/dashboard/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response... No data received.
Retrying.
--2022-07-20 22:55:30-- (try: 2) http://127.0.0.1:8000/account/login/?next=/business/dashboard/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response...
Супервизор / журнал Gunicorn совсем не помогает:
[2022-07-20 23:06:34 +0200] [980] [INFO] Starting gunicorn 20.1.0
[2022-07-20 23:06:34 +0200] [980] [INFO] Listening at: http://127.0.0.1:8000 (980)
[2022-07-20 23:06:34 +0200] [980] [INFO] Using worker: sync
[2022-07-20 23:06:34 +0200] [986] [INFO] Booting worker with pid: 986
[2022-07-20 23:08:01 +0200] [980] [CRITICAL] WORKER TIMEOUT (pid:986)
[2022-07-20 23:08:02 +0200] [980] [WARNING] Worker with pid 986 was terminated due to signal 9
[2022-07-20 23:08:02 +0200] [1249] [INFO] Booting worker with pid: 1249
[2022-07-20 23:12:26 +0200] [980] [CRITICAL] WORKER TIMEOUT (pid:1249)
[2022-07-20 23:12:27 +0200] [980] [WARNING] Worker with pid 1249 was terminated due to signal 9
[2022-07-20 23:12:27 +0200] [1515] [INFO] Booting worker with pid: 1515
Nginx просто выдает:
502 Bad Gateway
Я ничего не вижу в логах, я не вижу никакой ошибки при запуске dev-сервера из Django, также Sentry ничего не показывает. Полностью потерян.
Я использую Django 4.0.x и все библиотеки обновлены.
Скрипт проверки базы данных проверяет только подключение. Из-за неправильной конфигурации репликации базы данных, БД подключалась и читалась, но при записи зависала.
Страница входа пытается записать сессию в таблицы, что в данном случае не удалось.