我有一系列服务器运行多个工人。这些都是长期运行的任务,需要10分钟到36小时不等。因此,如果可能的话,我希望尽量避免预取,并让每个工作人员在完成任务后拿起一个单独的新任务。在
我正在使用celeryd
init.d服务,并且
CELERYD_ACKS_LATE = True
CELERYD_PREFETCH_MULTIPLIER = 1
在工作服务器的/etc/default/celeryd
中。在
但是,如果我转到pythonshell控制台
^{pr2}$我在dict输出中看到:
...
u'prefetch_count': 4,
...
我使用RabbitMQ作为代理,使用Redis作为后端。我怀疑这种预取会导致一些工作人员在完成初始任务后仍然处于空闲状态,因为其他工作人员的队列中有挂起的任务。例如,目前我有两个服务器,总共有9个工人在运行。在一个20个任务批处理开始时,所有9个任务都同时运行。现在,大约9千万年后,只有6名工人在工作。在
目前没有回答
相关问题 更多 >
编程相关推荐