我正在使用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