Код: Выделить всё
celery -A celery_task worker --pool=threads --concurrency=4 -Q A,B,B,B
Код: Выделить всё
import time
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task(queue="A")
def simulate_long_work():
print("Doing long work")
time.sleep(10)
print("Done long work")
return 'Work completed'
@app.task(queue="B")
def simulate_short_work():
print("Doing short work")
time.sleep(1)
print("Done short work")
return 'Work completed'
Код: Выделить всё
import celery_task
celery_task.simulate_long_work.apply_async()
celery_task.simulate_long_work.apply_async()
celery_task.simulate_long_work.apply_async()
celery_task.simulate_long_work.apply_async()
celery_task.simulate_short_work.apply_async()
celery_task.simulate_short_work.apply_async()
celery_task.simulate_short_work.apply_async()
celery_task.simulate_short_work.apply_async()
< /code>
Один возможный вывод, обратите внимание на задачу «короткая работа» потребляется до 4-й «длинной работы», даже если они производятся в конце концов, «долгая работа»: < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/79518944/celery-worker-allocate-specific-number-of-concurrencies-to-queue[/url]