我有五个不同的 Django 项目,它们都在一个安装了 RabbitMQ 的盒子上运行。我将芹菜用于各种任务。每个项目似乎都在接收用于其他项目的任务。
每个代码库都有自己的虚拟环境,运行以下内容:
./manage.py celeryd --concurrency=2 --queues=high_priority
每个 settings.py 中的参数如下所示:
CELERY_SEND_EVENTS = True
CELERY_TASK_RESULT_EXPIRES = 10
CELERY_RESULT_BACKEND = 'amqp'
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
CELERY_TIMEZONE = 'UTC'
BROKER_URL = 'amqp://guest@127.0.0.1:5672//'
BROKER_VHOST = 'specific_app_name'
我看到回溯让我认为应用程序在不应该收到彼此的消息时:
Traceback (most recent call last):
File "/home/.../.virtualenvs/.../local/lib/python2.7/site-packages/kombu/messaging.py", line 556, in _receive_callback
decoded = None if on_m else message.decode()
File "/home/.../.virtualenvs/.../local/lib/python2.7/site-packages/kombu/transport/base.py", line 147, in decode
self.content_encoding, accept=self.accept)
File "/home/.../.virtualenvs/.../local/lib/python2.7/site-packages/kombu/serialization.py", line 187, in decode
return decode(data)
File "/home/.../.virtualenvs/.../local/lib/python2.7/site-packages/kombu/serialization.py", line 74, in pickle_loads
return load(BytesIO(s))
ImportError: No module named emails.models
在这种情况下,emails.models
模块出现在一个项目中,而不出现在其他项目中。然而其他人正在展示这种追溯。
我没有看过多个节点名称或类似的东西。像这样的东西会解决这个问题吗?