4

Celery 3.0 を使用しており、以下のような構成ファイルがあります。

セロリconfig.py

BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

CELERY_IMPORTS = ("tasks", )
CELERY_TASK_RESULT_EXPIRES = 300

タスク.py

import celery

@celery.task
def function(x,y):
    return x + y

と function.py

from tasks import function

print function.delay(4,4).get()

次のコマンドでアプリケーションを実行します

celeryd --loglevel=INFO --config=celeryconfig

今まですべてがうまくいっています。私はredisとセロリを実行して答えを得ています。

しかし、parallizer という別のファイルから function コマンドを実行すると、

ソケットエラーが発生し、

 socket.error: [Errno 61] Connection refused

私のファイルは以下のようなものです、

from examples.dummy.tasks import function
print function.delay(4,4).get()

何か案は ?

4

3 に答える 3

7

同じ問題があり、最終的にそのことに気づきrabbitmqredisプロセスが停止しました。

Mac では、これらのサービスが自作経由でインストールされた場合、ターミナルで次のコマンドを実行して、これらのサービスが実行されているかどうかを確認できます。

brew services list

によってサービスを再起動できます (経由でインストールした場合brew)

brew services restart rabbitmq
brew services restart redis
于 2016-11-07T08:49:56.970 に答える
5

私は同じ問題を抱えていました。問題は、プロジェクトの __init__.py でこのコードを見逃していたことです。

from __future__ import absolute_import

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app

私はそれがそこにいる誰かに役立つことを願っています...

于 2015-07-15T12:00:05.340 に答える
1

問題は、

パラレルライザーとは異なるパスからceleryconfig.pyを実行していました。

celeryconfig.pyをparalellizerと同じパスに移動すると、問題が修正されました。

于 2013-03-08T15:37:07.270 に答える