2

我使用 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"
    }
}
4

0 回答 0