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核心数相同
|