Reputation: 11
I have a issue to connect to my Redis 6 with python 3.9 and celery 5.3.6.
There is a Sentinel to use to connect and TLS activate.
I use this code to test my connection:
import ssl
from celery import Celery
REDIS_URL = "sentinel://sentinel_url:9990"
c = Celery("celery",
broker=REDIS_URL,
backend=REDIS_URL,
broker_transport_options = {
'master_name': 'RedisCluster',
'sentinel_kwargs': {
'ssl': True,
'ssl_cert_reqs': ssl.CERT_NONE
}
},
result_backend_transport_options = {
'master_name': 'RedisCluster',
'sentinel_kwargs': {
'ssl': True,
'ssl_cert_reqs': ssl.CERT_NONE
}
},
broker_use_ssl = {
'ssl_cert_reqs': ssl.CERT_NONE
},
redis_backend_use_ssl = {
'ssl_cert_reqs': ssl.CERT_NONE
},
)
def test():
print("hello")
work = c.send_task(test())
And i have this error
Traceback (most recent call last):
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/kombu/connection.py", line 472, in _reraise_as_library_errors
yield
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/celery/app/base.py", line 798, in send_task
self.backend.on_task_call(P, task_id)
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/celery/backends/redis.py", line 373, in on_task_call
self.result_consumer.consume_from(task_id)
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/celery/backends/redis.py", line 169, in consume_from
return self.start(task_id)
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/celery/backends/redis.py", line 147, in start
self._consume_from(initial_task_id)
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/celery/backends/redis.py", line 177, in _consume_from
self._pubsub.subscribe(key)
File "/opt/rh/rh-python38/root/usr/lib64/python3.8/contextlib.py", line 131, in __exit__
self.gen.throw(type, value, traceback)
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/celery/backends/redis.py", line 130, in reconnect_on_error
self._ensure(self._reconnect_pubsub, ())
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/celery/backends/redis.py", line 384, in ensure
return retry_over_time(
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/kombu/utils/functional.py", line 318, in retry_over_time
return fun(*args, **kwargs)
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/celery/backends/redis.py", line 106, in _reconnect_pubsub
metas = self.backend.client.mget(self.subscribed_to)
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/redis/commands/core.py", line 2016, in mget
return self.execute_command("MGET", *args, **options)
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/redis/client.py", line 540, in execute_command
conn = self.connection or pool.get_connection(command_name, **options)
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/redis/connection.py", line 1104, in get_connection
connection.connect()
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/redis/sentinel.py", line 55, in connect
return self.retry.call_with_retry(self._connect_retry, lambda error: None)
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/redis/retry.py", line 51, in call_with_retry
raise error
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/redis/retry.py", line 46, in call_with_retry
return do()
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/redis/sentinel.py", line 45, in _connect_retry
self.connect_to(self.connection_pool.get_master_address())
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/redis/sentinel.py", line 35, in connect_to
super().connect()
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/redis/connection.py", line 288, in connect
self.on_connect()
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/redis/connection.py", line 391, in on_connect
self.read_response()
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/redis/sentinel.py", line 65, in read_response
return super().read_response(
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/redis/connection.py", line 512, in read_response
response = self._parser.read_response(disable_decoding=disable_decoding)
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/redis/_parsers/resp2.py", line 15, in read_response
result = self._read_response(disable_decoding=disable_decoding)
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/redis/_parsers/resp2.py", line 38, in _read_response
raise error
redis.exceptions.AuthenticationError: Authentication required.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "test_redis4.py", line 38, in <module>
work = c.send_task(test())
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/celery/app/base.py", line 799, in send_task
amqp.send_task_message(P, name, message, **options)
File "/opt/rh/rh-python38/root/usr/lib64/python3.8/contextlib.py", line 131, in __exit__
self.gen.throw(type, value, traceback)
File "/app/ansit00/ansible-6.2/venv-INFRAPDO/lib64/python3.8/site-packages/kombu/connection.py", line 476, in _reraise_as_library_errors
raise ConnectionError(str(exc)) from exc
kombu.exceptions.OperationalError: Authentication required.
I am thinking of passing master info from Sentinel and crash on Authen on Redis.
I don't know to set my user and password in my block code for Redis.
Upvotes: 1
Views: 171