ブローカーとしてredisでセロリを使用しています。
add タスクを作成し、2 つのワーカーを実行して、テストのために異なるキューをリッスンします。
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"
}
}