Celery连接到远程服务器broker_url

时间:2016-08-27 18:26:36

标签: python django celery django-celery djcelery

我在docs之后守护着芹菜。

我的BROKER_URL已按以下格式设置: - 'amqp://<user>:<password>@<ip>/<vhost>'

因此,当我手动启动芹菜celery worker -A app_name时,它会与远程服务器连接。但是当我守护它时,它会与localhost amqp连接。有什么理由吗?

以下是我创建芹菜对象的方法: -

app = Celery('c26_search')    
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
app.conf.update(
    CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend'
)
print app.conf.BROKER_URL  # prints remote url

我的settings.py文件: -

CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
BROKER_URL = `'amqp://<user>:<password>@<ip>/<vhost>'`

为什么它表现得如此奇怪?即使它打印远程IP网址,但仍尝试连接本地amqp?

1 个答案:

答案 0 :(得分:1)

好吧,我找到了问题的答案: -

在celeryd文件中,将代理网址CELERY_OPTS设为CELERYD_OPTS="-n worker2.%h --broker=amqp://<user>:<password>@<ip>/<vhost>"