我在多个服务器上运行芹菜,每个服务器的并发性为2或更多,我想平衡芹菜任务,以便CPU使用率最低的服务器可以处理我的芹菜任务。
例如,假设我有2个服务器(A和B),每个服务器的并发性为2,如果队列中有2个任务,我希望A处理一个任务而B处理另一个任务。但目前可能的是,A上的第一个进程将执行一个任务,而A上的第二个进程将执行第二个任务,而B处于空闲状态。
有没有一种简单的方法,通过celery扩展或配置,我可以将任务路由到CPU使用率最低的服务器?
答案 0 :(得分:1)
最佳选择是使用生产服务器中的celery.send_task
,然后将工作线程部署到n
实例上。然后可以使用celery -A proj worker -l info -Ofair
按照@ealeon的方式运行这些工作程序。
这样,负载将分布在所有服务器上,而无需在使用服务器上存在代码库。
答案 1 :(得分:0)
尝试:
" http://docs.celeryproject.org/en/latest/userguide/optimizing.html#guide-optimizing
您可以通过启用-Ofair worker选项来禁用此预取行为:
$ celery -A proj worker -l info -Ofair"