Tornado剑谱03——入门程序

2018-08-27 17:19:57 浏览数 (1)

1.入门程序

1.1. 项目构建

Tornado的项目是自主独立开发模式,首先定位好自己的项目文件夹,如d:/py_torn/

在项目文件夹中,创建第一个项目文件夹demo01/

创建一个web应用程序模块:helloworld.py

创建一个服务器运行模块:manage.py

项目文件夹结构如下:

代码语言:javascript复制
|-- d:/py_torn/ # tornado项目工作目录

    |-- demo01/ # 入门项目

    |-- helloworld.py # 一个项目程序模块

    |-- manage.py # 服务器定义模块

1.2. WEB接口定义

编辑helloworld.py,添加一个web接口处理类

代码语言:javascript复制
# 引入需要的模块

from tornado.web import RequestHandler

# 定义接口处理类

class IndexHandler(RequestHandler):

    # 定义视图处理函数

    def get(self):

     # 返回视图数据

    self.write(‘<h1>hello tornado!</h1>’)

1.3. WEB服务器配置启动

编辑manage.py服务器模块,添加如下内容

代码语言:javascript复制
# 引入需要的模块

from tornado.web import Application

from tornado.ioloop import IOLoop

import helloworld

if __name__ == “__main__”:

    # 将项目部署成web应用程序

    app = Application([

         (r’/’, helloworld.IndexHandler),

    ])

    # 指定监听端口

    app.listen(8000)

    # 启动事件轮询监听

    IOLoop.current().start()

1.4. 运行测试

开发完成之后,执行命令启动服务器

代码语言:javascript复制
python manage.py

打开浏览器,访问http://localhost:8000,出现如下界面

|

image.png

|

1.5. 启动服务器配置

在上面的项目中,看到的是直接将web接口定义类绑定到了路由上,监听端口之后就完成了项目的部署,那么项目部署的底层操作究竟是什么样的呢?我们改造上述服务器处理模块manager.py的代码如下:

代码语言:javascript复制
from tornado.httpserver import HTTPServer

..

If __name__ == “__main__”:

    app = Applicatoin(

      [

          (r’/’, IndexHandler)

    ],

     ..

    )

    # app.listen(8000)

    http_server = HTTPServer(app)

    http_server.bind(8000)

    http_server.start()

    IOLoop.current().start()

|

上述代码就是app.listen(8000)后台执行的底层的代码

首先将web应用程序对象app部署到了HTTPServer服务器中

HTTPServer服务器绑定监听了8000端口

然后通过HTTPServer.start()函数启动了服务器

|

PS:HTTPServer.start()函数中,可以传递参数

如果没有传递参数:默认启动一个进程直接运行服务

如果传递了>0的参数:表示启动指定数目的进程运行服务

如果传递了None或者<=0的参数:表示启动进程的数量和当前主机的CPU核心数相同

|

0 人点赞