我正在使用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和芹菜跑步并得到答案。
但是当我从另一个名为parallelizer的文件中运行function命令时,
我收到套接字错误,
socket.error: [Errno 61] Connection refused
我的档案如下,
from examples.dummy.tasks import function
print function.delay(4,4).get()
有什么想法吗?
答案 0 :(得分: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
我希望对那里的人有用...
答案 1 :(得分:5)
遇到同样的问题,最终意识到rabbitmq
和redis
进程已停止运行。
在mac上,如果这些服务是通过自制软件安装的,那么你可以通过在终端上运行以下命令来验证这些服务是否正在运行,
brew services list
可以通过(如果通过brew
安装)
brew services restart rabbitmq
brew services restart redis
答案 2 :(得分:1)
问题是,
我在与我的并行程序不同的路径下运行celeryconfig.py。
当我将celeryconfig.py带到paralellizer的相同路径时,它解决了这个问题。