我使用 celery 和 redis 作为代理。
我构建了一个添加任务并运行两个工作人员听不同的队列进行测试。
celeryd -I tasks -l info -Q tasks
celeryd -I tasks -l info -Q count
这是tasks.py
from celery.task import task
@task(exchange="tasks")
def add(x, y):
result = x + y
return "I am queue 2.", result
但是,无论我是否分配了队列,两个队列都运行任务。
如果我有什么误解,请告诉我。非常感谢。
以下是celeryconfig.py
BROKER_URL = "redis://localhost:6379/0"
# Redis Backend
CELERY_RESULT_BACKEND = "redis"
CELERY_REDIS_HOST = "localhost"
CELERY_REDIS_PORT = 6379
CELERY_REDIS_DB = 0
CELERY_SEND_EVENTS = True
CELERY_RESULT_BACKEND = "amqp"
CELERY_RESULT_ENGINE_OPTIONS = {"echo": True}
# CELERY_DEFAULT_QUEUE = "default"
CELERY_DEFAULT_EXCHANGE = "default"
CELERY_QUEUES = {
"default": {
"exchange": "default"
},
"tasks": {
"exchange": "tasks"
},
"count": {
"exchange": "tasks"
}
}