在Rabbitmq中指定自定义虚拟主机时,芹菜任务未运行

时间:2018-08-27 04:26:02

标签: django rabbitmq celery django-celery

我正在使用celery和rabbitmq作为代理来处理我的Django项目中的异步任务。当我使用默认代理URL时,一切工作正常,但是在生产服务器中,我需要运行两个Django项目,这两个项目都需要一个异步任务管理器。现在,为此,我在rabbitmq中创建了两个虚拟主机。 然后,在两个项目中,我将settings.py中的CELERY_BROKER_URL更改为amqp:// guest:guest @ localhost:5672 / vhost_name。

然后,我使用超级用户辅助程序celery -Alice worker -l info(alice是celery.py所在的项目根目录)来运行它。奇怪的是,我的一个项目工作正常,但在另一个项目中,任务正在接收但未执行!因此,对于该项目,我将其更改为默认的CELERY_BROKER_URL并开始工作,并且还运行了未执行的任务。

要调试,我在本地计算机上运行了相同的东西,并且发生了相同的事情。除了任务数量外,项目配置大部分相似。第一个项目(有效)有3个任务,而另一个项目有8个任务。

这是一个错误吗?否则,有人可以指出我正确的方向吗?

项目根目录中的

celery.py

import os
import logging
from celery import Celery
from decouple import config
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'alice.settings')

app = Celery('alice')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

if config("ENVIRONMENT") == "PRODUCTION":
    from raven import Client
    from raven.contrib.celery import register_signal, register_logger_signal
    from django.conf import settings
    client = Client(settings.RAVEN_DSN)
    register_logger_signal(client)
    register_logger_signal(client, loglevel=logging.INFO)
    register_signal(client)
    register_signal(client, ignore_expected=True)

芹菜版本

amqp==2.2.2
billiard==3.5.0.3
celery==4.1.0
kombu==4.1.0
vine==1.1.4

0 个答案:

没有答案
相关问题