Python Celery socket.error: [Errno 61] 连接被拒绝
我正在使用Celery 3.0,并且我的配置文件如下所示。
celeryconfig.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
tasks.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和celery,并且得到了结果。
但是当我从另一个叫做parallelizer的文件中运行函数命令时,
我遇到了socket错误,
socket.error: [Errno 61] Connection refused
我的文件内容如下,
from examples.dummy.tasks import function
print function.delay(4,4).get()
有什么想法吗?
4 个回答
7
我也遇到过同样的问题,后来发现是 rabbitmq
和 redis
这两个服务停止了。
在Mac上,如果这些服务是通过Homebrew安装的,你可以通过在终端运行以下命令来检查这些服务是否在运行,
brew services list
如果是通过 brew
安装的,可以用以下命令重启服务,
brew services restart rabbitmq
brew services restart redis
7
我之前也遇到过同样的问题,问题出在我在项目的 __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
希望这对某些人有帮助...
1
问题是,
我在一个和我的并行处理程序不同的路径下运行了celeryconfig.py。
当我把celeryconfig.py移动到和并行处理程序相同的路径时,问题就解决了。