Не удается создать новый сеансовый ключ. Вполне вероятно, что кэш недоступен

#django #redis #bitnami

#django #redis #bitnami

Вопрос:

Я запускаю диаграмму bitnami / redis helm в своем кластере kubernetes. мое приложение django использует его в качестве кэша сеанса.

 CACHES = {
    'default':
        {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://redis-service:6379/0",
        "OPTIONS": 
            {
                "CLIENT_CLASS": "django_redis.client.DefaultClient"
            }
    }
}
  

вот как выглядит моя переменная session_engine

 SESSION_ENGINE="django.contrib.sessions.backends.cache"
  

Эта настройка работала просто отлично, когда я запускал redis как развертывание с одной репликой. когда я переключился на битнамис диаграмму руля (с sentinel) Я начал периодически получать эту ошибку при попытке входа на страницу администратора

Не удается создать новый сеансовый ключ. Вполне вероятно, что кэш недоступен.

Если я переключусь на развертывание одного модуля Redis, он будет работать нормально. но использование диаграммы bitnami helm, похоже, вызывает эту проблему.

Я могу подтвердить, что могу получить доступ к кластеру Redis из моего модуля Django. что еще более сбивает с толку, так это то, что он периодически вызывает.

любая помощь будет высоко оценена.

ОБНОВЛЕНИЕ 1.

после проверки журналов redis я получаю следующее

 1601409529.593320 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cachendvrotljwn4502p278mbmvxy1l5xgkqk"
1601409529.594428 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cachezw19k1uqzb164h1n9x8b8dcjywrwltva"
1601409529.595374 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cachejf4y14zd7ll9rjtc8fh6ecicu3mqsbpn"
1601409529.596342 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cacheaacgflnnjvwjkb4kjahsr8qir3qxgua1"
1601409529.597401 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cachelhx6l6hgikkhb958iynvdmjyz4tqkwig"
1601409529.598442 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cachewaemv1rhy6j1lel5j87vt30e3c5saanq"
1601409529.599485 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cachegs5rmaz3sc8scevoczbcozd6fh4svukl"
1601409529.600538 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cache19k1kr63ql4odwwqc9e0l1uv7oj4ck0j"
1601409529.601610 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cachemdci7awb7z5wmdcim093tfehu2e60ru6"
1601409529.602664 [0 10.2.1.77:58836] "EXISTS" ":1:django.contrib.sessions.cacheeubmkiqvc0gnn273er86c2qoscauqzqa"
  

похоже, что это связано с этим https://github.com/django/django/blob/master/django/contrib/sessions/backends/cache.py#L42

поэтому django пытается вставить ключ в кеш и, чтобы избежать столкновения, он пытается 10000 раз, прежде чем выдавать исключение.

Я вижу, что в redis нет ключей.

при успешном входе в систему журналы выглядят так

 1601410010.012538 [0 127.0.0.1:53662] "ping"
1601410010.308631 [0 10.2.1.74:6379] "SET" ":1:django.contrib.sessions.cachee7f697vcuv1fyxfyvgw6uexyv2w58o1a" "x80x05}x94." "PX" "1209600000" "NX"
1601410010.323639 [0 10.2.1.74:6379] "SET" ":1:django.contrib.sessions.cachee7f697vcuv1fyxfyvgw6uexyv2w58o1a" "x80x05x95xb0x00x00x00x00x00x00x00}x94(x8cr_auth_user_idx94x8cx0224x94x8cx12_auth_user_backendx94x8c)django.contrib.auth.backends.ModelBackendx94x8cx0f_auth_user_hashx94x8c@dccdd9eb53e5ebfcd0f544de6aefa932892729837c6d16257be00d5715204edax94u." "PX" "1209600000"
  

Комментарии:

1. Вероятно, вам следует заглянуть в журналы развертывания Bitnami, чтобы выяснить, что происходит.

2. это здорово. Я обновляю вопрос @AKX