芹菜在使用 redis 或 rabbitmq 时不会利用所有核心



我正在使用django&芹菜,执行许多长期任务。它在带有CentOS的4核服务器上运行。

最初,我使用了默认的django经纪人(broker_url ='django://'),它运行得很好。但是我想要事件和监视,所以我尝试切换到redis或兔子。

REDIS和RABBITMQ的工作,从某种意义上说,他们最终执行所有任务,但是与Django经纪人不同,他们有时只使用一些内核,有时甚至只使用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

django(perfect)

BROKER_URL = 'django://'

redis(mishaving)

BROKER_URL = 'redis://localhost:6379/0'

兔子(Mishaving)

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 

知道为什么会发生这种情况吗?谢谢

在玩不同配置后, - 折叠开关解决了我的问题。

python manage.py celery worker -E -Ofair

我不确定什么是基本机制,或者是否有更正确的解决方案,但我很高兴它有效。

相关内容

  • 没有找到相关文章

最新更新