我有幾個關於任務路由,併發和性能的問題。 這裏是我的用例:CELERYD_CONCURRENCY, - 併發性和自動調整
我有一個專用的服務器來運行芹菜任務,所以我可以使用所有的CPU在這臺服務器上運行芹菜工人。
我有很多不同的Python任務,我路由使用:CELERY_ROUTES,因爲任務執行真正不同類型的Python代碼,我創建了5個不同的工作。 這些工人都當我使用ansible部署我的項目創建,這裏有一個例子:
[program:default_queue-celery]
command={{ venv_dir }}/bin/celery worker --app=django_coreapp --loglevel=INFO --concurrency=1 --autoscale=15,10 --queues=default_queue
environment =
SERVER_TYPE="{{ SERVER_TYPE }}",
DB_SCHEMA="{{ DB_SCHEMA }}",
DB_USER="{{ DB_USER }}",
DB_PASS="{{ DB_PASS }}",
DB_HOST="{{ DB_HOST }}"
directory={{ git_dir }}
user={{ user }}
group={{ group }}
stdout_logfile={{ log_dir }}/default_queue.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=5
redirect_stderr=true
autostart=true
autorestart=true
startsecs=10
killasgroup=true
我也曾經在settings.py一個CELERY_QUEUES使CELERY_ROUTES和我的芹菜程序(隊列)
之間的橋樑CELERY_DEFAULT_QUEUE = 'default_queue'
而且如果真的發生了,我不路由任務就會去我的「DEFAULT_QUEUE」
爲了給空間我所有的隊列中,我設置--concurrency爲1 DEFAULT_QUEUE,且多爲我最重要的隊列。
但我想知道,AutoScale是否對併發性具有同樣的影響?意思是,如果我將併發性設置爲1,並將--autoscale設置爲15,10(以上示例)
我的工作人員是否在CPU上工作並在此CPU上處理最多15個任務? 或者這是否意味着完全不同的東西?
感謝您提供這些非常需要的信息。 因此,這兩個值都會定義我做'htop'時看到的processus數目? 那麼可以在settings.py中設置的CELERYD_CONCURRENCY如何被自動縮放覆蓋,如--concurrency是? – MiniYuuzhan