Tornado 是一个Python web框架和异步网络库,具体的介绍Tornado 用户指南。文章简单记录tornado的使用过程,持续更新
Hello world
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler): # 继承RequestHandler类
def get(self):
self.write("hello")
class ID0Handler(tornado.web.RequestHandler): # 创建一个处理类继承自 tornado.web.RequestHandler
def get(self): # 处理类重写get方法
self.write("hello-ID0")
class ID1Handler(tornado.web.RequestHandler): # 继承RequestHandler类
def get(self):
n = int(self.get_argument('n')) # 获取参数
self.write('hello-ID1: n*n='+str(n*n))
class ID2Handler(tornado.web.RequestHandler): # 继承RequestHandler类
#get是从服务器上获取数据,post是向服务器传送数据
def get(self): # 先由get触发,构建一个界面
self.write('<html><body><form action="/ID2/IDX" method="post">'
'<input type="text" name="message">'
'<input type="submit" value="Submit">'
'</form></body></html>')
def post(self): # 触发post方法
self.set_header("Content-Type", "text/plain")
self.write("You wrote " + self.get_argument("message"))
# 存放路由表对象列表,前面是地址,后面是映射到的响应函数
URL_Tuples = [(r"/", MainHandler), (r"/ID0", ID0Handler), (r"/ID1", ID1Handler), (r"/ID2/IDX", ID2Handler)]
app = tornado.web.Application(URL_Tuples) # 创建这三个对象
if __name__ == "__main__":
app.listen(8888) # 绑定一个监听端口
tornado.ioloop.IOLoop.current().start() # 启动web程序,开始监听端口的连接
在浏览器输入下图的地址即可访问,(由于没有使用服务器地址,所以默认是本地,如果是服务器地址就可以愉快的传输参数了,也可以把参数编写成html格式,暂时不搞那么复杂)
前三个响应函数是get()方法的重写,注意地址如何生成的。
以上大致分为三步:
1, 创建一个处理类继承自 tornado.web.RequestHandler
2,处理类重写get方法
3,编写主函数监听端口
最后一个是post()方法的重写 ,get是从服务器上获取数据,post是向服务器传送数据。GET 数据在url中(如n的值,数据量非常小),POST 数据不在url中。在浏览器中:GET - 从指定的资源请求数据。POST - 向指定的资源提交要被处理的数据。注意看一下action="/ID2/IDX" method="post">
在实际应用中,可能只有post方法向服务器发送数据,而由于HTLM表单编码不确定一个标签的参数是单一值还是一个列表, RequestHandler
有明确的方法来允许应用程序表明是否它期望接收一个列表. 对于列表, 使用用 get_query_arguments
和 get_body_arguments
而不是它们的单数形式.具体的
实例理解
def post(self):
#
predict_result = json.dumps({'code': 400, 'result': '异常'})
try:
#获取表单上的参数
paramstr=self.request.body.decode('utf-8')
infoLog.info('PredictHandler : %s' % (paramstr.replace('\n', '')))
#解析参数
code,notice = self.checkPredictParam(paramstr)
#加载参数
predict_param=json.loads(paramstr)
。。。。处理。。。