tornado.process
---多工序公用工程¶
用于处理多个进程的实用程序,包括将服务器复刻为多个进程和管理子进程。
- tornado.process.fork_processes(num_processes: Optional[int], max_restarts: Optional[int] = None) int [源代码]¶
启动多个工作进程。
如果
num_processes
如果没有或<=0,我们会检测这台机器上可用的核心数量,并复刻子进程的数量。如果num_processes
如果给定并且大于0,我们就派生出特定数量的子进程。因为我们使用进程而不是线程,所以任何服务器代码之间都没有共享内存。
请注意,多个进程与自动加载模块(或
autoreload=True
选择权tornado.web.Application
当debug=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
增加以下内容:stdin
,stdout
和stderr
可能有价值tornado.process.Subprocess.STREAM
,这将使生成的子进程的相应属性PipeIOStream
. 如果使用此选项,则调用方负责在使用流时关闭流。
这个
Subprocess.STREAM
期权与期权set_exit_callback
和wait_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