Прерывистая ошибка сервера в Django после обновления до MySQL 8
После обновления до MySQL 8 и сохранения всего остального в проекте Django я получаю периодическую ошибку сервера, которая, похоже, как-то связана с пакетом cookiebanner, который я использовал без проблем в течение нескольких лет - https://github.com/sinnwerkstatt/django-cookiebanner
Новичок здесь - здравствуйте - надеюсь, я размещаю это в правильном месте. И надеюсь, что здесь есть нужная информация, чтобы эта тема была полезной.
Согласно журналу доступа, это, похоже, произошло из-за этого запроса:
78.198.210.145 - - [08/Mar/2025:05:48:19 +0000] "GET /podcasts/helga-schubert-story-distance-fragments/ HTTP/1.1" 500 1173 "https://www.google.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15" "78.198.210.145" response-time=0.020
Вскоре после этого я проверил тот же URL и получил 200:
146.199.51.170 - - [08/Mar/2025:10:20:56 +0000] "GET /podcasts/helga-schubert-story-distance-fragments HTTP/1.1" 301 0 "https://www.fictionable.world/podcast_front.html" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:135.0) Gecko/20100101 Firefox/135.0" "146.199.51.170" response-time=0.001
146.199.51.170 - - [08/Mar/2025:10:20:56 +0000] "GET /podcasts/helga-schubert-story-distance-fragments/ HTTP/1.1" 200 8051 "https://www.fictionable.world/podcast_front.html" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:135.0) Gecko/20100101 Firefox/135.0" "146.199.51.170" response-time=0.017
Шаблон этой страницы вызывает тег из пакета cookiebanner. Вот верхняя часть базового шаблона с вызовом cookiebanner:
<!DOCTYPE html>
<html lang="en" ontouchmove>
<head>
{% load static %}
{% load cookiebanner %}
{% block styles_content %}
{% endblock styles_content %}
{% cookie_accepted 'analytics' as cookie_analytics %}
{% if cookie_analytics %}
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=XXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'XXX');
</script>
{% endif %}
[CONTINUES]
Это тег {% cookie_accepted 'analytics' as cookie_analytics %}
, который вызывает cookie_accepted
cookie_accepted
из пакета cookie_accepted
cookiebanner allowed_cookies = context["request"].COOKIES.get("cookiebanner")
- пакета,
@register.simple_tag(takes_context=True)
def cookie_accepted(context, cookie_group):
allowed_cookies = context["request"].COOKIES.get("cookiebanner")
if not allowed_cookies:
return False
return cookie_group in unquote(allowed_cookies).split(",")
Вот требования.txt для всех пакетов:
asgiref==3.5.0
dj-database-url==0.5.0
Django==3.2.12
gunicorn==20.1.0
pytz==2021.3
sqlparse==0.4.2
whitenoise==6.0.0
django-cookiebanner==0.2.5
mysqlclient==2.1.0
stripe==2.73.0
dj-stripe==2.6.1
Но, похоже, это не ограничивается страницами с шаблонами, включающими этот тег cookiebanner. Например, я получаю периодические ошибки сервера на сайте администратора, который просто использует шаблоны Django по умолчанию.
Эта периодически возникающая ошибка, похоже, относится к тому времени, когда я попытался обновить Django 4.2. Это потребовало от меня обновления до MySQL 8. Обновление до Django 4 не сработало, поэтому я откатил все до версий, указанных выше.
Но после того, как я откатил все назад, я начал получать эту периодическую ошибку.
Так что я в недоумении:
- почему контекст для построения этого шаблона (иногда) не включает запрос, который ожидает пакет cookibanner
- почему тот же код, который работал до обновления до MySQL 8, теперь выдает ошибку, которая, похоже, связана с пакетом cookiebanner, который я без проблем использую уже несколько лет
- почему тот же запрос для того же URL выдает keyerror в 5: 48 утра, а не в 10:20 утра
- почему админский сайт, который вообще не использует теги cookiebanner, также выдает периодические ошибки
Подскажите, если я упустил какую-то важную информацию, или если есть другое место, где мне следовало бы разместить подобную тему. Любые мысли будут приняты с благодарностью.