请问celery如何连接带有用户名的redis?我使用以下进行连接时出错,实在无法找到原因,下面的redis可直接测试
from celery.schedules import crontab
REDIS_HOST = '47.116.67.21'
REDIS_PORT = '6379'
REDIS_USER = 'test'
REDIS_PASSWORD = 'test1234'
BROKER_URL = f'redis://{REDIS_USER}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/0'
CELERY_RESULT_BACKEND = f'redis://{REDIS_USER}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/0'
CELERY_TIMEZONE = 'Asia/Shanghai'
print('BROKER_URL', BROKER_URL ,'\nCELERY_RESULT_BACKEND', 'CELERY_RESULT_BACKEND')
CELERYBEAT_SCHEDULE = {
'test_timed_task':{
'task': 'CeleryTest.task_test.tasks.timed_task_test',
'schedule': crontab(minute='*/1')
}
}
按照如上方式,使用celery -A CeleryTest.main beat --loglevel=debug 出现
LocalTime -> 2025-05-26 16:09:46
Configuration ->
. broker -> redis://test:**@47.116.67.21:6379/0
. loader -> celery.loaders.app.AppLoader
. scheduler -> celery.beat.PersistentScheduler
. db -> celerybeat-schedule
. logfile -> [stderr]@%DEBUG
. maxinterval -> 5.00 minutes (300s)
[2025-05-26 16:09:46,578: DEBUG/MainProcess] Setting default socket timeout to 30
[2025-05-26 16:09:46,580: INFO/MainProcess] beat: Starting...
[2025-05-26 16:09:46,714: DEBUG/MainProcess] Current schedule:
<ScheduleEntry: test_timed_task CeleryTest.task_test.tasks.timed_task_test() <crontab: */1 * * * * (m/h/d/dM/MY)>
[2025-05-26 16:09:46,714: DEBUG/MainProcess] beat: Ticking with max interval->5.00 minutes
[2025-05-26 16:09:46,808: ERROR/MainProcess] beat: Connection error: WRONGPASS invalid username-password pair or user is disabled.. Trying again in 2.0 seconds...
[2025-05-26 16:09:48,914: ERROR/MainProcess] beat: Connection error: WRONGPASS invalid username-password pair or user is disabled.. Trying again in 4.0 seconds...
pip 相关依赖如下
celery 5.1.2
Django 1.11.6
django-redis 4.11.0
redis 4.3.6