.Tang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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调式 虫子晶体管
posted on 2018-02-11 23:02  .Tang  阅读(239)  评论(0编辑  收藏  举报