1.服务器 非阻塞
import tornado.ioloop import tornado.web import tornado.httpserver # 非阻塞 import tornado.options # 提供了多种选择 python xxx.py --port=xxxx from tornado.options import define,options define('port',default=8000,help='run port',type=int) # windows通过Ctrl+鼠标左键 define('version',default=0.1,help='version',type=str) # 此vim上通过;gb查看define class MainHandler(tornado.web.RequestHandler): def get(self): self.render("ces.html") # 写入页面 class AHandler(tornado.web.RequestHandler): def get(self): self.write("hello world A") name = self.get_argument('aa','默认值') self.write("<br>") self.write(name) #多个值,取最后一个值 self.write("<br>上面是get_argument,下面是get_arguments:") self.write("<br>") # get_arguments ,write() only accepts bytes, unicode, and dict objects. name = self.get_arguments('aa') #得到列表,不能直接write self.write("<span>".join(name)) # 所有值 application = tornado.web.Application( handlers=[(r"/",MainHandler), (r'/a', AHandler) ], template_path='templates', # 表明页面html的路径 debug=True # 上传后服务器自动重启 ) if __name__ == '__main__': tornado.options.parse_command_line() # 通过sys.arg获取命令行输入参数(python xxx.py --port=xxx) print(options.port) print(options.version) http_server = tornado.httpserver.HTTPServer(application) # 非阻塞 application.listen(options.port) tornado.ioloop.IOLoop.instance().start() # 启动io循环
# *** 知识点 路由 Handler write get_argument get_arguments url传参方式
# 路由 * 客户端访问服务器 可以看成客服端读取服务器的资源,路由就是确定访问的资源路径
# 路由表 匹配路径执行对应的事件
# Handler:先简单看成 确定路由后,执行相对的事件
# write 输出到浏览器。 先写入缓冲(flush直接写到浏览器)再一起写入浏览器
# get_argument #多个值,取最后一个值
# get_arguments #多个值,取所有值 list类型
#url传参方式
# 通过命令行传参数python xxx.py --port=xxxx
# 通过查询字符串 url+ ?name=蜘蛛侠 (get_argument,get_arguments)
# render写入页面
# template_path = 'templates', # 写在路由表里,表明路径templates
# debug调式 虫子晶体管