Django project cannot set sessions only on localhost, and the web keeps pending forever after login callback. Here is the log:
"GET / HTTP/1.1" 302 0
"GET /kc/callback?state=95ad23ff24f648dd9a28b845dab57623&session_state=feac8cb3-a655-4608-82b5-2a309e97db72&code=771863de-fa31-4aa7-a936-c26c082995e1.feac8cb3-a655-4608-82b5-2a309e97db72.d52c4c80-ab1f-4a3c-9909-f1d43de72c5c HTTP/1.1" 302 0
"GET /kc/callback?state=3c3f804074094bccb802dfb65b8eb34f&session_state=feac8cb3-a655-4608-82b5-2a309e97db72&code=d1ae63ae-9c6e-4fb3-b2b6-75ac7f339a0d.feac8cb3-a655-4608-82b5-2a309e97db72.d52c4c80-ab1f-4a3c-9909-f1d43de72c5c HTTP/1.1" 302 0
setting user session
Internal Server Error: /
Traceback (most recent call last):
File "C:\Users\...backend\venv\lib\site-packages\django\contrib\sessions\backends\base.py", line 233, in _get_session
return self._session_cache
AttributeError: 'SessionStore' object has no attribute '_session_cache'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\...backend\venv\lib\site-packages\django\db\backends\base\base.py", line 219, in ensure_connection
self.connect()
File "C:\Users\...backend\venv\lib\site-packages\django\utils\asyncio.py", line 33, in inner
return func(*args, **kwargs)
File "C:\Users\...backend\venv\lib\site-packages\django\db\backends\base\base.py", line 200, in connect
self.connection = self.get_new_connection(conn_params)
File "C:\Users\...backend\venv\lib\site-packages\django\utils\asyncio.py", line 33, in inner
return func(*args, **kwargs)
File "C:\Users\...backend\venv\lib\site-packages\django\db\backends\postgresql\base.py", line 187, in get_new_connection
connection = Database.connect(**conn_params)
File "C:\Users\...backend\venv\lib\site-packages\psycopg2\__init__.py", line 127, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: FATAL: sorry, too many clients already
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\...backend\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\...backend\ilumens_backend_sf\middleware\auth.py", line 164, in __call__
if "user" not in request.session:
File "C:\Users\...backend\venv\lib\site-packages\django\contrib\sessions\backends\base.py", line 55, in __contains__
return key in self._session
File "C:\Users\...backend\venv\lib\site-packages\django\contrib\sessions\backends\base.py", line 238, in _get_session
self._session_cache = self.load()
File "C:\Users\...backend\venv\lib\site-packages\django\contrib\sessions\backends\db.py", line 43, in load
s = self._get_session_from_db()
File "C:\Users\...backend\venv\lib\site-packages\django\contrib\sessions\backends\db.py", line 34, in _get_session_from_db
expire_date__gt=timezone.now()
File "C:\Users\...backend\venv\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\...backend\venv\lib\site-packages\django\db\models\query.py", line 431, in get
num = len(clone)
File "C:\Users\...backend\venv\lib\site-packages\django\db\models\query.py", line 262, in __len__
self._fetch_all()
File "C:\Users\...backend\venv\lib\site-packages\django\db\models\query.py", line 1324, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "C:\Users\...backend\venv\lib\site-packages\django\db\models\query.py", line 51, in __iter__
results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
File "C:\Users\...backend\venv\lib\site-packages\django\db\models\sql\compiler.py", line 1173, in execute_sql
cursor = self.connection.cursor()
File "C:\Users\...backend\venv\lib\site-packages\django\utils\asyncio.py", line 33, in inner
return func(*args, **kwargs)
File "C:\Users\...backend\venv\lib\site-packages\django\db\backends\base\base.py", line 259, in cursor
return self._cursor()
File "C:\Users\...backend\venv\lib\site-packages\django\db\backends\base\base.py", line 235, in _cursor
self.ensure_connection()
File "C:\Users\...backend\venv\lib\site-packages\django\utils\asyncio.py", line 33, in inner
return func(*args, **kwargs)
File "C:\Users\...backend\venv\lib\site-packages\django\db\backends\base\base.py", line 219, in ensure_connection
self.connect()
File "C:\Users\...backend\venv\lib\site-packages\django\db\utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "C:\Users\...backend\venv\lib\site-packages\django\db\backends\base\base.py", line 219, in ensure_connection
self.connect()
File "C:\Users\...backend\venv\lib\site-packages\django\utils\asyncio.py", line 33, in inner
return func(*args, **kwargs)
File "C:\Users\...backend\venv\lib\site-packages\django\db\backends\base\base.py", line 200, in connect
self.connection = self.get_new_connection(conn_params)
File "C:\Users\...backend\venv\lib\site-packages\django\utils\asyncio.py", line 33, in inner
return func(*args, **kwargs)
File "C:\Users\...backend\venv\lib\site-packages\django\db\backends\postgresql\base.py", line 187, in get_new_connection
connection = Database.connect(**conn_params)
File "C:\Users\...backend\venv\lib\site-packages\psycopg2\__init__.py", line 127, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: FATAL: sorry, too many clients already
pgAdmin4 dashboard shows lots of idle access trying to get the session data. click here
Upgrade Django from 3.1 to 3.2, and try Python 3.7 and 3.8, but still not works. Errors occurred from last week only on localhost. The remote test and production servers work normally.