Celery beat + redis with password 抛出 No Auth 异常

Raj*_*war 4 redis celery celerybeat docker

我在 docker 设置中使用 celery 和 redis 作为两个服务。配置如下:

  redis:
    image: redis:latest
    hostname: redis
    ports:
      - "0.0.0.0:6379:6379"
    command:
      --requirepass PASSWORD

  celeryworker:
    <<: *django
    depends_on:
      - redis
      - postgres
    command: "celery -E -A rhombus.taskapp worker --beat --scheduler redbeat.schedulers:RedBeatScheduler --loglevel INFO --uid taskmaster --concurrency=5"
Run Code Online (Sandbox Code Playgroud)

当我尝试构建我的容器并在工人准备好后安排一些工作时,我得到了一个例外

[2018-03-20 04:40:52,082: WARNING/Beat] redis.exceptions.ResponseError: NOAUTH Authentication required.
Run Code Online (Sandbox Code Playgroud)

我一直无法弄清楚还需要什么配置才能使此设置正常工作。对这个问题的一些见解和指导是可观的。

下面是完整的堆栈跟踪。

完整的堆栈跟踪

aft*_*ner 9

或者,根据celery docs,如果您没有设置显式用户,则可以像这样设置代理 url:

broker_url='redis://:password@hostname:port/db_number'
Run Code Online (Sandbox Code Playgroud)


Chi*_*and 8

如果您对 redis 进行了身份验证,则 URI 应采用此格式。

broker_url = 'redis://user:password@redishost:6379/0'
Run Code Online (Sandbox Code Playgroud)

您提到的 URI 不是有效的 redis uri。如果您更新 URI,它应该可以工作。

没有身份验证,uri应该是

broker_url = 'redis://redishost:6379/0'
Run Code Online (Sandbox Code Playgroud)

  • 似乎默认用户是“default”,如 [redis.conf](https://github.com/antirez/redis/blob/unstable/redis.conf#L673) 文件中所述。 (6认同)