web-dev-qa-db-ja.com

セロリが機能しない:amqp:// guest:** @ 127.0.0.1:5672//に接続できません

セロリワーカー+ドッカー+ジャンゴを実行できません。イメージrabbitとリンクされたワーカーをダウンロードしましたが、実行時にエラーが発生します:amqp:// guest:** @ 127.0.0.1:5672 //に接続できません:[Errno111]接続が拒否されました。 worker_1。 Django:1.11、カロリー:4.1.0。何が悪いの?

docker-compose

rabbit:
  image: rabbitmq:latest
  ports:
    - "5672:5672"

worker:
  build: ./project
  volumes:
    - ./main:/src/app
  depends_on:
    - rabbit
  links:
    - web #Django project
  entrypoint: /src/app/calery.sh

カロリー

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault('Django_SETTINGS_MODULE', 'app.settings')

app = Celery('app')

app.config_from_object('Django.conf:settings', namespace='APP')

app.autodiscover_tasks()

@app.task(bind=True)
def add():
   print('Task')

celery.sh

#!/bin/bash

cd app
celery -A app worker -l info
5
Serg Bombermen

このエラーは、CELERY_BROKER_URLの無効なホストが原因で発生します。指定したエラーに基づくと、ブローカーURLのホストは127.0.0.1のようです。これは、Dockerを使用しているため、ホストのパブリックIPを指定しない限り機能しません。作成ファイルでサービス名を使用するには、CELERY_BROKER_URLのホストを更新する必要があります。あなたの場合はrabbitです。以下のようなものが機能するはずです:

CELERY_BROKER_URL = 'amqp://guest:guest@rabbit:5672/%2F'

ユーザーとパスワードおよびその他の詳細を変更します。

1
Rieljun Liguid

Guest:guestでアクセスできない場合は、独自のユーザーをシステムに追加してください。このドキュメントは、RabbitMQサーバー内で独自のユーザー、パスワード、仮想ホストを設定するのに役立ちます。

http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html#broker-rabbitmq

0