tornado.process ---多工序公用工程

用于处理多个进程的实用程序,包括将服务器复刻为多个进程和管理子进程。

exception tornado.process.CalledProcessError[源代码]

的别名 subprocess.CalledProcessError .

tornado.process.cpu_count() int[源代码]

返回此计算机上的处理器数。

tornado.process.fork_processes(num_processes: Optional[int], max_restarts: Optional[int] = None) int[源代码]

启动多个工作进程。

如果 num_processes 如果没有或<=0,我们会检测这台机器上可用的核心数量,并复刻子进程的数量。如果 num_processes 如果给定并且大于0,我们就派生出特定数量的子进程。

因为我们使用进程而不是线程,所以任何服务器代码之间都没有共享内存。

请注意,多个进程与自动加载模块(或 autoreload=True 选择权 tornado.web.Applicationdebug=True )当使用多个进程时,在调用 fork_processes .

在每个子进程中, fork_processes 返回其 任务ID ,介于0和之间的数字 num_processes . 异常退出的进程(由于信号或非零退出状态)使用相同的ID(最多 max_restarts 时间)。在父进程中, fork_processes 电话 sys.exit(0) 所有子进程正常退出后。

最大重新启动次数默认为100。

可用性:Unix

tornado.process.task_id() Optional[int][源代码]

返回当前任务ID(如果有)。

如果此进程不是由 fork_processes .

class tornado.process.Subprocess(*args: Any, **kwargs: Any)[源代码]

包裹 subprocess.Popen 支持iostream。

构造函数与 subprocess.Popen 增加以下内容:

  • stdinstdoutstderr 可能有价值 tornado.process.Subprocess.STREAM ,这将使生成的子进程的相应属性 PipeIOStream . 如果使用此选项,则调用方负责在使用流时关闭流。

这个 Subprocess.STREAM 期权与期权 set_exit_callbackwait_for_exit 方法不适用于Windows。因此,没有理由使用这个类来代替 subprocess.Popen 在那个平台上。

在 5.0 版更改: 这个 io_loop 已删除参数(自4.1版以来已弃用)。

set_exit_callback(callback: Callable[[int], None]) None[源代码]

callback 当此进程退出时。

回调接受一个参数,即进程的返回代码。

此方法使用 SIGCHLD 处理程序,这是一个全局设置,如果有其他库试图处理同一个信号,则可能会发生冲突。如果您使用多个 IOLoop 可能需要打电话 Subprocess.initialize 先指定一个 IOLoop 运行信号处理程序。

在许多情况下,如果信号处理程序导致问题,可以使用stdout或stderr流上的关闭回调作为退出回调的替代方法。

可用性:Unix

wait_for_exit(raise_error: bool = True) Future[int][源代码]

返回A Future 它在进程退出时解析。

用法:

ret = yield proc.wait_for_exit()

这是一个友好的替代品 set_exit_callback (和一个替换块 subprocess.Popen.wait

默认情况下,加薪 subprocess.CalledProcessError 如果进程具有非零退出状态。使用 wait_for_exit(raise_error=False) 抑制此行为并返回退出状态而不引发。

4.2 新版功能.

可用性:Unix

classmethod initialize() None[源代码]

初始化 SIGCHLD 处理程序。

信号处理程序在 IOLoop 以避免锁定问题。请注意 IOLoop 用于信号处理的对象不必与单个子进程对象使用的对象相同(只要 IOLoops 每个都在不同的线程中运行)。

在 5.0 版更改: 这个 io_loop 已删除参数(自4.1版以来已弃用)。

可用性:Unix

classmethod uninitialize() None[源代码]

移除 SIGCHLD 处理程序。