我在两台机器上运行相同的芹菜工人。但我希望一台机器抓取更多的任务,因为它有更多的系统资源。这可能吗?
所以我有机器 1 和机器 2,在它们上面都运行着一个带有简单代码的 calculuationTasks.py:
from celery import Celery
app = Celery('calculuationTasks',
broker='???',
backend='???',
result_backend='???')
app.conf.update({
'task_routes': {
'calculuationTasks.add': {'queue': 'calculation'},
}
})
app.conf.update(task_track_started=True)#,result_extended=True)
@app.task(bind=True, soft_time_limit=100000)
def add(self, number):
return number*2
在我的代码中,我现在执行:
add.delay(10)
在两台机器上,我之前当然会启动芹菜工人:
celery -A calculationTasks worker --loglevel=info --concurrency 8 --queues=caclulcation -n machine1@%h
celery -A calculationTasks worker --loglevel=info --concurrency 8 --queues=caclulcation -n machine2@%h
现在我希望机器 2 获得更多这样的任务。
只需将机器 2 上的concurrency
设置增加到 10 即可:celery -A calculationTasks worker --loglevel=info --concurrency 10 --queues=caclulcation -n machine2@%h
每个芹菜工人可以有不同的设置。您已经使用了这个 - 您指定了不同的名称。