We use redis with django-rq to manage queues on our project. Heroku has recently forced upgrades to Redis 7.0.11 and that requires TLS. Per their docs we need to set 'ssl_cert_reqs'=None in order to make sure redis is using TLS but not looking for a cert.

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": os.environ.get('REDIS_URL'),
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "CONNECTION_POOL_KWARGS": {
                "ssl_cert_reqs": None
            },
        }
    }
}

Setting the above in my project's settings.py results in the following error:

TypeError at /login/ __init__() got an unexpected keyword argument 'ssl_cert_reqs'

Other settings like "max_connections": 5 don't cause an error. I've been searching and I haven't seen anyone else with this issue. Has anyone else run across this issue and hopefully a fix?

We're using:

Django==2.2.28
django-redis==5.2.0
django-rq==2.8.1
redis==4.5.5
rq==1.15.1

It also fails on another build we have:

Django==3.0.14
django-redis==5.2.0
django-rq==2.8.1
redis==4.6.0
rq==1.15.1

We've tried configuring our project with multiple builds of Django, django-redis, django-rq, redis, and rq with no luck.

EDIT: Added the full traceback:

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/login/?next=/dashboard/send/

Django Version: 2.2.28
Python Version: 3.7.17
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'sendapp.stream',
 'storages',
 'debug_toolbar',
 'django_rq',
 'rest_framework',
 'oauth2_provider',
 'corsheaders']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'corsheaders.middleware.CorsMiddleware']



Traceback:

File "/usr/local/lib/python3.7/site-packages/redis/connection.py" in get_connection
  1450.                 connection = self._available_connections.pop()

During handling of the above exception (pop from empty list), another exception occurred:

File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  115.                 response = self.process_exception_by_middleware(e, request)

File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  113.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/local/lib/python3.7/site-packages/django/views/generic/base.py" in view
  71.             return self.dispatch(request, *args, **kwargs)

File "/usr/local/lib/python3.7/site-packages/django/utils/decorators.py" in _wrapper
  45.         return bound_method(*args, **kwargs)

File "/usr/local/lib/python3.7/site-packages/django/views/decorators/debug.py" in sensitive_post_parameters_wrapper
  76.             return view(request, *args, **kwargs)

File "/usr/local/lib/python3.7/site-packages/django/utils/decorators.py" in _wrapper
  45.         return bound_method(*args, **kwargs)

File "/usr/local/lib/python3.7/site-packages/django/utils/decorators.py" in _wrapped_view
  142.                     response = view_func(request, *args, **kwargs)

File "/usr/local/lib/python3.7/site-packages/django/utils/decorators.py" in _wrapper
  45.         return bound_method(*args, **kwargs)

File "/usr/local/lib/python3.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  44.         response = view_func(request, *args, **kwargs)

File "/usr/local/lib/python3.7/site-packages/django/contrib/auth/views.py" in dispatch
  61.         return super().dispatch(request, *args, **kwargs)

File "/usr/local/lib/python3.7/site-packages/django/views/generic/base.py" in dispatch
  97.         return handler(request, *args, **kwargs)

File "/usr/local/lib/python3.7/site-packages/django/views/generic/edit.py" in post
  142.             return self.form_valid(form)

File "/usr/local/lib/python3.7/site-packages/django/contrib/auth/views.py" in form_valid
  90.         auth_login(self.request, form.get_user())

File "/usr/local/lib/python3.7/site-packages/django/contrib/auth/__init__.py" in login
  108.         request.session.cycle_key()

File "/usr/local/lib/python3.7/site-packages/django/contrib/sessions/backends/base.py" in cycle_key
  297.         self.create()

File "/usr/local/lib/python3.7/site-packages/django/contrib/sessions/backends/cache.py" in create
  43.             self._session_key = self._get_new_session_key()

File "/usr/local/lib/python3.7/site-packages/django/contrib/sessions/backends/base.py" in _get_new_session_key
  152.             if not self.exists(session_key):

File "/usr/local/lib/python3.7/site-packages/django/contrib/sessions/backends/cache.py" in exists
  70.         return bool(session_key) and (self.cache_key_prefix + session_key) in self._cache

File "/usr/local/lib/python3.7/site-packages/django/core/cache/backends/base.py" in __contains__
  212.         return self.has_key(key)

File "/usr/local/lib/python3.7/site-packages/django_redis/cache.py" in _decorator
  31.             return method(self, *args, **kwargs)

File "/usr/local/lib/python3.7/site-packages/django_redis/cache.py" in has_key
  137.         return self.client.has_key(*args, **kwargs)

File "/usr/local/lib/python3.7/site-packages/django_redis/client/default.py" in has_key
  664.             return client.exists(key) == 1

File "/usr/local/lib/python3.7/site-packages/redis/commands/core.py" in exists
  1708.         return self.execute_command("EXISTS", *names)

File "/usr/local/lib/python3.7/site-packages/redis/client.py" in execute_command
  1266.         conn = self.connection or pool.get_connection(command_name, **options)

File "/usr/local/lib/python3.7/site-packages/redis/connection.py" in get_connection
  1452.                 connection = self.make_connection()

File "/usr/local/lib/python3.7/site-packages/redis/connection.py" in make_connection
  1492.         return self.connection_class(**self.connection_kwargs)

File "/usr/local/lib/python3.7/site-packages/redis/connection.py" in __init__
  956.         super().__init__(**kwargs)

Exception Type: TypeError at /login/
Exception Value: __init__() got an unexpected keyword argument 'ssl_cert_reqs'
0

There are 0 best solutions below