我正在使用 BaseManager 与工作进程池共享队列。我在它上面调用 start() 是为了让管理器在另一个线程中运行。
在 shutdown() 下,文档说“这仅在使用 start() 启动服务器进程时可用。” 但是,如果我调用shutdown(),前台进程将在每次终止前阻塞管理器进程20 秒。如果我不调用shutdown(),前台进程会立即离开吗?
我错过了什么?
另外,有没有人知道为什么文档说“这可以被多次调用。”?为什么要向管理器进程发送多个关闭信号?
我正在使用 BaseManager 与工作进程池共享队列。我在它上面调用 start() 是为了让管理器在另一个线程中运行。
在 shutdown() 下,文档说“这仅在使用 start() 启动服务器进程时可用。” 但是,如果我调用shutdown(),前台进程将在每次终止前阻塞管理器进程20 秒。如果我不调用shutdown(),前台进程会立即离开吗?
我错过了什么?
另外,有没有人知道为什么文档说“这可以被多次调用。”?为什么要向管理器进程发送多个关闭信号?
它按设计等待 20 秒。请参阅此处 了解更多信息
process.join(timeout=0.2)
if process.is_alive():
util.info('manager still alive')
if hasattr(process, 'terminate'):
util.info('trying to `terminate()` manager process')
process.terminate()
process.join(timeout=0.1)
if process.is_alive():
util.info('manager still alive after terminate')