我正在使用带有Django的Celery来管理任务队列并使用一个(或多个)小型(单核)EC2实例来处理任务。
我有一些考虑因素。
现在说我有4个EC2实例,我用“-c 5”开始芹菜。即每个实例5个并发任务。
在这个设置中,如果我有4个新任务,id就像要确保,每个任务都进入不同的实例,而不是4个去同一个实例,每个任务都在争夺CPU。
同样,如果我有8个任务,id就像每个实例一次获得2个任务,而不是2个实例每个处理4个任务。
芹菜的行为是否与我描述的方式相同?如果没有,那我怎么能让它表现得这样呢?
答案 0 :(得分:2)
实际上很简单:每个ec2-instance启动一个celery-instance。将并发设置为每个ec2-instance的核心数。
现在这些任务不会干扰并在你的实例中很好地分配。
(以上假设你的任务是cpu绑定的)