Tornado初学篇(四) app.listen() 和多进程 的补充说明及使用自带多线程启动的三个问题

一、app.listen()

app.listen()只能在单进程模式中使用

二、多进程

虽然tornado给我们提供一次性启动多个进程的方式,由于一些问题,不建议使用HTTPServer.start()启动多进程,手动启动多进程,并还能绑定不同的端口

Tornado初学篇(四) app.listen() 和多进程 的补充说明及使用自带多线程启动的三个问题_第1张图片

三、手动启动

相当于在黑屏终端使用Python 文件名,开启多个终端就开启了多个进程,使用手动启动方式会解决以下三个问题

3.1、使用黑屏终端运行文件就不存在父进程和子进程的关系,所以耦合度比较低,互不影响

3.2 每个进程使用不同的端口号运行后,若要修改其中一个端口的代码,只需要停止该端口号的服务,并不影响其他进程

3.3 可以根据每个端口号对进程进行监控,方便管理

四、问题源

  4.1 每个子进程都会从父进程中复制一份IOLoop的实例,如果在创建子进程前修改了IOLoop,会影响所有的子进程

     注解:由于修改父进程里的IOLoop实例,就会影响所有子进程,这样的耦合度非常高

  4.2 所有的进程都是由一个命令启动

     注解:HTTPServer.start(5) 运行文件时是同时启动5个子进程,由于一次性启动无法做到在不停止服务的情况下修改代码

        eg:仅想修改某处代码,但必须停止整体的服务

  4.3所有进程共享一个端口,想要分别监控很困难

          在liunx中可以分别监控每个进程,主要是根据端口号监控进程

 

你可能感兴趣的:(Tornado)