[英]Celery doesn't work with RabbitMQ with “--autoreload” option
[英]Celery doesn't utilize all cores, when using redis or rabbitmq
我正在使用django和celery編寫構建服務器,該服務器執行許多長任務。 它在具有centos的4核服務器上運行。
最初,我使用默認的django代理(BROKER_URL ='django://'),並且運行良好。 但是我想要事件和監視,所以我嘗試切換到Redis或Rabbitmq。
從某種意義上說,redis和rabbitmq都可以最終執行所有任務,但是與django broker不同,它們有時僅利用某些內核,有時甚至只使用1(!),而其他內核則閑置。
我想再次強調一下,django代理始終正確地利用了所有核心,為此我唯一要更改的是代理。
我的配置是標准的(具有兩個隊列除外):
CELERY_DEFAULT_QUEUE = 'default'
CELERY_QUEUES = (
Queue('default', routing_key='task.#'),
Queue('new_batches', routing_key='new_batch.#'),
)
CELERY_ACKS_LATE = True
CELERYD_PREFETCH_MULTIPLIER = 1
BROKER_URL = 'django://'
BROKER_URL = 'redis://localhost:6379/0'
BROKER_URL = 'amqp://user:pass@localhost:5672/scourge'
CELERY_BACKEND = "amqp"
CELERY_RESULT_BACKEND = "amqp"
CELERY_TASK_RESULT_EXPIRES = 60*60 * 24*7 # results expire after a week
知道為什么會這樣嗎? 謝謝
經過不同的配置,-Ofair開關解決了我的問題。
python manage.py celery worker -E -Ofair
我不確定確切的底層機制是什么,或者不確定是否有更正確的解決方案,但是我很高興它能起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.