Tornado——入门基础(二)内置服务器

一:tornado内置服务器

内置服务器在编程操作过程中,通过listen()监听一个端口,然后通过IOLoop对象进行了事件轮询监听处理

二:分析内置服务器底层操作代码(查看底层代码)

定义一个web application为app

  • app.listen(8000)#底层操作的方式:主要封装了将项目部署到服务器的操作
  • server = HTTPServer(app)#部署项目app到服务器
    server.listen(8000)#监听8000端口--单进程的的实现模式
  • server =HTTPServer(app)#部署项目,跟单进程没有关系
    server.bind(8000)#绑定8000端口
    server.start()#创建多进程的核心操作步骤
  1. 拓展:
    查看底层操作代码可知(了解,不推荐使用)server.start(none/0):表示根据当前运行的硬件主机CPU的核心数量创建对应的多个进程
    server.start(1/):默认值,表示当前进程中直接运行服务器,默认为单进程
    server.start(>1):按照指定的数量创建多个进程
  1. 推荐:
    tornado默认单进程单线程的运行模式,当然也推荐多进程运行
    通过手工控制多进程运行,不同的进程之间相互独立!
  • 手工多进程操作方式
    通过define()定义端口sport作为一个变量
    eg:define(‘port’,default=8000)#定义变量名字为port 默认端口为8000
    通过parse_command_line()将这个变量作为命令行可以接受的参数选项
  • 接受命令行指定的参数
    程序运行时可以接受命令行参数数值,就可以在运行一个程序是,指定其使用参数中包含的数据值--端口
    eg:
    python demo01.py --port==8000
    python demo01.py --port==8000

三:小结

  • 话不多说,直接来干货——一个应用程序代码
from tornado.web import RequestHandler, Application
from tornado.ioloop import IOLoop
from tornado.options import define, options, parse_command_line
from tornado.httpserver import HTTPServer

#定义变量
define('port', default=8088, help='this is well fly')


#定义视图类
class IndexHandler(RequestHandler):

    #重写get方法
    def get(self, *args, **kwargs):
        self.write('i am tornado')


#程序入口
if __name__ == '__main__':

    #开始接受监听命令行参数数据,命令行参数数据必须通过define指定
    parse_command_line()

    #构建web Application
    app = Application([(r'/', IndexHandler),
                       ])

    #项目部署到server
    server = HTTPServer(app)
    server.bind(options.port)
    server.start()

    #启动轮询监听
    IOLoop.current().start()

未完待续......

你可能感兴趣的:(Tornado——入门基础(二)内置服务器)