Веб-рамка Торнадо является основой разработанной Python
Web-сервисы используют Торнадо, и могут быстро создавать веб-сервисы высокопроизводительных
Торнадо неблокирующая без блокировки асинхронных однопоточных серверов, очень быстро, условно говоря, как правило, если количество одновременных соединений Джанго около 3000, это было 10 000 Tornado
Легко узнать Tornado стоимость обучения очень низкая, это очень легко научиться использовать веб-рамки
пункт установить торнадо
tornado.ioloop Импорт # -А циркуляция Epoll.
tornado.web Импорт #web основной модуль кадра
импорт tornado.httpserver
из tornado.options импортируют определить, варианты
DEFINE ( 'порт', по умолчанию = 8080, помощь = 'запустить порт', тип = целое)
Класс MainHandler (tornado.web.RequestHandler):
Защита получить (сам):
self.write ( «привет это мой первый WebWerver»)
Класс IndexHandler ():
Применение = tornado.web.Application (
[
(R & л '/', MainHandler), # данные хранятся кортеж.
( '/ Индекс', IndexHandler)
# Используется для хранения пути
]
) # Конкретизированных основной модуль на основе следующих классов, интерфейсов основных серверных приложений рамочные .web вызовов.
если '__main__' __name__ =:
http_server = tornado.httpserver.HTTPServer (приложение)
http_server.listen (options.port) операции # связывания
tornado.ioloop.IOloop.current (). Пуск () #, задать цикл Epoll. Включите сервер , чтобы получить доступ к различному пути, вернуться к различным ресурсам.
маршрутизация
get_arguments () ? ключ = значение
Простой пример
импорт tornado.ioloop
импорт tornado.web
MainHandler класс (tornado.web.RequestHandler): # Наследование донные содержимое упаковки.
Защита получить (сам):
self.write ( «Привет, это мой первый веб-сервер»)
применение = tornado.web.Application ([ основные приложения #
(R & л "/", MainHandler), # Обработчик и определить путь
])
если __ name__ == "__ main__ ":
application.listen (8080)
tornado.ioloop.IOLoop.current().start()
tornado.ioloop #开启循环,让服务一直等待请求的到来
tornado.web #web框架核心模块,服务基本功能都封装在此模块中
路由表
application = tornado.web.Application([
(r"/",MainHandler),
])
客户端访问服务器可以看成是:客户端读取服务器资源的一个过程,路由表就指定了具体访问什么资源
在 Tornado 中,路由表通过如上方式定义
路由表是访问服务器的入口,在工作中如果有新的需求,往往只需要在路由表中添加新的路由即可
Handler
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("hello ")
在这里指定请求的资源 ,
启动Tornado
导入
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
Handler
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write('hello')
路由
if __name__ == '__main__':
tornado.options.parse_command_line() #打印请求信息.
app = tornado.web.Application(
handlers=[
(r'/',IndexHandler),
]
)
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.current().start()
命令行交互 使用命令行来控制启动
Tornado 支持通过命令行参数来控制 Tornado 的启动形式
代码
define('port', default=8080, help='run port', type=int)
define('version', default='0.0.1', help='version 0.0.1', type=str)
#通过这个来设置动态指定端口.
在命令行中输入:python tor.py --port=8888
使用
python test.py --port=8000
python test.py --version=1.0
python test.py --help
输入和输出
输入:
class TestIndexHandler(tornado.web.RequestHandler):
def get(self):
name = self.get_argument('name', 'no') #指定key,value
self.write('hello '+name)
print(name)
name = self.get_arguments('name')
self.write(' ')
self.write(','.join(name))
print(name)
使用:http://127.0.0.1:8000/test?name=budong #key=value&key=value形式.
? 后面便是参数
可以通过: get_argument 和 get_arguments 来获取参数值
输出:
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write('abc')
从 Tornado 输出到浏览器我们可以使用 write