Как я могу подключиться из Django к Docker Redis Container с помощью BackgroundScheduler? - PullRequest
0 голосов
/ 11 июля 2020

В настоящее время я работаю над проектом Django, который должен отправлять сообщения в мобильное приложение через веб-сокеты. Для проекта Django я использовал Docker, чтобы разместить его в сети. Теперь я хочу впервые отправлять запланированные сообщения, для этого использую Apscheduler или django -apscheduler. Я пытаюсь сохранить задания в контейнере Redis. Но почему-то в связи отказано. Я в принципе что-то делаю не так или он где-то завис?

Dockerfile:

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
RUN pip install -r requirements.txt

docker -compose.yml

    version: '3'

    services:
      redis:
        image: redis
        command: redis-server
        ports:
          - '6379:6379'
          - '6380:6380'
      web:
        build: .\experiencesampling
        command: python manage.py runserver 0.0.0.0:8000
        volumes:
         - .:\code
        ports:
          - "8000:8000"
    #  worker_channels:
    #
    #    build: .\experiencesampling
    #    command: python manage.py runworker channels
    #    volumes:
    #      - .:\code
    #    links:
    #      - redis
      channels:
        build: .\experiencesampling
        command: daphne -p 8001 experiencesampling.asgi:application
        volumes:
          - .:\code
        ports:
          - "8001:8001"
        links:
          - redis

jobs.py (пытается подключиться к redis), я уже пробовал 0.0.0.0, localhost, redis: // redis для «хоста»

jobstores = {
    'default': RedisJobStore(jobs_key='dispatched_trips_jobs', run_times_key='dispatched_trips_running', host='redis', port=6380)
}

executors = {
    'default': ThreadPoolExecutor(20),
    'processpool': ProcessPoolExecutor(5)
}
job_defaults = {
    'coalesce': False,
    'max_instances': 3
}


#jobStore.remove_all_jobs()
scheduler = BackgroundScheduler(jobstores=jobstores, executors=executors, job_defaults=job_defaults)

register_events(scheduler)
scheduler.start()
print("Scheduler started!")

Ошибка (появляется несколько раз)

web_1       |
web_1       | Scheduler started!
web_1       | Error getting due jobs from job store 'default': Error 111 connecting to redis:6380. Connection refused.
web_1       | System check identified no issues (0 silenced).
web_1       | July 11, 2020 - 19:00:30
channels_1  | 2020-07-11 19:00:29,866 WARNING  Error getting due jobs from job store 'default': Error 111 connecting to redis:6380. Connection refused.
web_1       | Django version 3.0.8, using settings 'experiencesampling.settings'
web_1       | Starting ASGI/Channels version 2.3.1 development server at http://0.0.0.0:8000/
web_1       | Quit the server with CONTROL-C.
...