簡體   English   中英

Redis + Docker + Django - 錯誤111連接被拒絕

[英]Redis+Docker+Django - Error 111 Connection Refused

我正在嘗試使用Redis作為Celery的代理,用於我使用Docker Compose的Django項目。 我無法弄清楚我究竟做錯了什么,但盡管控制台日志消息告訴我Redis正在運行並接受連接(事實上,當我做docker ps ,我可以看到容器正在運行) ,我仍然得到關於連接被拒絕的錯誤。 我甚至做到了

docker exec -it <redis_container_name> redis-cli
ping

並且看到響應是PONG

以下是我的settings.py中的Celery settings.py

BROKER_URL = 'redis://localhost:6379/0'
BROKER_TRANSPORT = 'redis'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ENABLE_UTC = True
CELERY_TIMEZONE = "UTC"

以下是我docker-compose.yml中的Redis容器設置:

redis:
    image: redis
    ports:
        - "6379:6379"

我記得也將redis容器與我的web容器相關聯。 我可以很好地啟動服務器,但是當我嘗試將任何內容上傳到網站時,我收到連接拒絕錯誤。 究竟出了什么問題?

編輯 :我記得使用VBoxManage移植到我的瀏覽器並訪問我的網站localhost:8000 ,所以我似乎不需要使用VM的IP而不是localhost來我的settings.py

編輯2 :如果我將設置中的localhost替換為docker-machine VM的IP地址或Redis容器的IP地址,那么當我上傳一個時,我的網站上很快就會收到一條錯誤的成功消息文件,但實際上沒有上傳任何內容。 底層上傳函數insertIntoDatabase()使用delay

由於將Celery從v3.1更新到v4,我遇到了類似的問題,根據本教程 ,需要在settings.py BROKER_URL CELERY_BROKER_URL更改為CELERY_BROKER_URL

settings.py部分

CELERY_BROKER_URL = 'redis://cache:6379/0'
CELERY_RESULT_BACKEND = 'redis://cache:6379/0'

docker-compose.yml部分

version: '2'
services:
  web:
    container_name: django-container
    *******
    other options
    *******

    depends_on:
      - cache
      - db

  cache:
    container_name: redis-container
    restart: always
    image: redis:latest

Django是否在一個與Redis容器相連的單獨容器中運行? 如果是這樣,你應該有一些帶有Ip和端口的環境變量,Django應該使用它來連接到Redis容器。 將BROKER_URL設置為使用redis Ip和port env vars,您應該開展業務。 同樣適用於RESULT_BACKEND。

環境變量的參考文檔在這里: Docker Compose docs

以下是我們如何在OfferUp的一個項目中使用自動添加的env變量的示例代碼:

BROKER_TRANSPORT = "redis"
_REDIS_LOCATION = 'redis://{}:{}'.format(os.environ.get("REDIS_PORT_6379_TCP_ADDR"), os.environ.get("REDIS_PORT_6379_TCP_PORT"))
BROKER_URL = _REDIS_LOCATION + "/0"
CELERY_RESULT_BACKEND = _REDIS_LOCATION + "/1"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM