CherryPy 线程池不增长或不缩减

1 投票
1 回答
714 浏览
提问于 2025-04-20 14:02

我现在在用CherryPy 3.2.2,遇到了一个问题,就是我的线程池(ThreadPool)根本没有扩大或缩小。查看wsgiserver2.py的源代码,我发现线程池类里面有两个函数,分别叫'grow'(扩大)和'shrink'(缩小)。如果你下载整个代码库并搜索这两个函数,会发现它们根本没有被调用。也许它们是以我不太了解的方式被调用,但我想知道这是不是个疏忽,还是我在找错地方。

注意:在服务器启动之前,我是从ServerAdapter正确设置了线程池的值(thread_pool和thread_pool_max),所以问题不在这里。

谢谢大家的帮助。

pcarl

1 个回答

2

你说得对。在CherryPy的流程中,既没有调用ThreadPool.shrink也没有调用ThreadPool.grow,而且thread_pool_max也没有任何作用,除非你明确调用这两个方法。

通常情况下,CherryPy会懒洋洋地创建线程工作者,最多到thread_pool的数量,然后就不再增加了。

如果你确定需要一个很大的线程池,这样会对你的应用造成严重的内存负担,你可以继承cherrypy.process.plugins.Monitor来监控线程队列的大小或其他参数,以便动态增加或减少线程池的大小。幸运的是,已经有一个现成的工具可以使用。

撰写回答