我正在Tornado中编写一个REST服务器。我使用带有max_workers
可配置参数的ProcessPoolExecutor
。然而,问题是,它似乎并没有以我想要的方式有效地限制流程的数量。代码是
def post(self):
...
self.process_pool_executor.submit(_execute_scenario_optimization, self.project_name,
self.scenario_name)
self._generate_output_json_from_dict({"execution_status": "RET_OK"})
return
当池中同时活动的最大进程数超过4时,我需要submit
来生成异常。你知道吗?
池执行器限制了一次可以运行的进程数量,但如果您给它们的任务比进程多,那么额外的任务就会进入队列,而不会引发异常。似乎没有办法限制这个队列的大小,所以您可能应该使用信号量来限制添加到队列中的项目数量。