zoukankan      html  css  js  c++  java
  • 服务的启动

    Import tornado.web  # tornado的基础web框架模块

    Import tornado.ioloop  # tornado的核心IO模块, 封装了Linuxepoll模块

    一. Tornado服务的启动要素:

     1. 核心代码如下:

    Tornado.web.Application().listen(端口, ip)  # 配置tornado参数, listen()用来设置http请求相关,服务没有启动

    Tornado.ioloop.IOLoop.instance().start()    # 开始事件循环, 启服务

    通常在Tornado.web.Application()对象实例化时, Application类传入路由映射表及setings配置信息.

    解析ApplicationTornado.web框架的核心应用类, 是与服务器对应的接口.

           

       2. 手动创建http服务器

      上面在实例化Application类后直接调用的listen()方法来设置的http请求服务器, 我们无法进行些个性化配置

      手动创建http服务器可实现, 如下:

         Import tornado.httpserver   # 引入内置模块,来改写下启服务之前的代码:

           obj = tornado.web.Application([(路由映射关系), ...])

             httpserver = tornado.httpserver.HTTPServer( obj )   # 这两行和起来的作用相当于上面的一个listen()方法

             Httpserver.listen(8000)

       此处的listen()方法和1中的listen不是同一个, 注意区分

      3. Tornado的单进程与多进程:

    以上启动的服务都是单进程下运行的, 如何启动多进程?

    obj = tornado.web.Application([(路由映射关系), ...])

    httpserver = tornado.httpserver.HTTPServer( obj )  # httpserveApplication关联, 以便能读到配置的路由

    httpserver.bind(8000)  # 此处不用listen方法了,注意

    Httpserver.start(5)  # 开启指定数量进程. 不指定时默认开启1个进程; 0,负数,None时都开启cpu核数进程

    注意: 1中截图内的app.listen()方法只能在但进程模式中使用

         3中启动多进程的方式有些问题, 不建议使用. 问题有:(1)启动的5个进程都属于子进程, 会从父进程

             中各自复制一份IOLoop,如在创建子进程前修改了IOLoop,会影响所有子进程; (2)所有进程都是由

             一个命令启动的, 无法做到在不停止服务的情况下修改代码. (3)所有进程共享一个端口, 想要分别

             监控很困难.

        

  • 相关阅读:
    关于EKT相关知识(类的反射)
    关于EKT的相关知识(类加载)
    jsoup中selector的用法及作用
    xml相关的Dom解析
    Jsoup的快速入门
    java.sql.SQLException: Column count doesn't match value count at row 1
    JAVA调用存储过程、存储函数
    注解的使用场景-反射与知识点
    JDK1.5新特性
    在JDK中,主要由以下类来实现Java反射机制
  • 原文地址:https://www.cnblogs.com/quzq/p/10966572.html
Copyright © 2011-2022 走看看