1.環境以及tornado安裝html
建立虛擬環境python
安裝tornado。具體實現步驟參考django安裝步驟linux
2.路由與tornado的啓動web
# 實現一個最簡單的tornado服務
import tornado.ioloop #監聽循環
import tornado.web #tornado包核心模塊
import tornado.httpserver #非阻塞服務器
import tornado.options #
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write('hello world')
application = tornado.web.Application(
handlers=[
(r'/',MainHandler), #路由表
]
#列表,列表中包含元組。配置路徑信息
) #實例化操做
#能夠傳入不少參數
#配置參數項
if __name__ == '__main__': #用來作測試,本身調用
tornado.options.parse_command_line() #打印請求信息(日誌信息),不加這一行後端不會有日誌信息
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(8080) #監聽,綁定端口,服務器由主動變爲被動
tornado.ioloop.IOLoop.current().start() #開啓監聽循環
#單進程單線程epoll
#epoll ,主動監聽,把監聽的任務交給操做系統,不斷詢問。監聽循環
後端對應的日誌信息:django
指定端口訪問後端
運行時若是不指定端口,就有默認端口,若是想指定端口使用已指定的端口瀏覽器
# 實現一個最簡單的tornado服務 import tornado.ioloop #監聽循環 import tornado.web #tornado包核心模塊 import tornado.httpserver #非阻塞服務器 import tornado.options from tornado.options import define,options #指定端口傳參 define('port',default=8080,help='run server port',type=int) class MainHandler(tornado.web.RequestHandler): def get(self): self.write('hello world') application = tornado.web.Application( handlers=[ (r'/',MainHandler), #路由表 ] ) if __name__ == '__main__': #用來作測試,本身調用 tornado.options.parse_command_line() #打印請求信息(日誌信息),不加這一行後端不會有日誌信息 http_server = tornado.httpserver.HTTPServer(application) http_server.listen(options.port) #監聽,綁定端口,服務器由主動變爲被動 tornado.ioloop.IOLoop.current().start() #開啓監聽循環 #單進程單線程epoll #epoll ,主動監聽,把監聽的任務交給操做系統,不斷詢問。監聽循環
訪問方式:服務器
(tornado_pro) pyvip@Vip:~/tornado_pro$ python 01-test.py --port=8000
[I 190326 23:57:26 web:2246] 200 GET / (10.0.2.2) 1.88ms
[W 190326 23:57:27 web:2246] 404 GET /favicon.ico (10.0.2.2) 0.82msapp
訪問結果以下:(訪問不通時,看是否作了端口映射)tornado
報錯解釋:
拒絕訪問:暫停訪問,服務未啓動
Not Found:找不到頁面,能夠訪問
輸入輸出:
輸出:write
輸入: http://127.0.0.1:8080/index?name=%20aaa
get請求:url ?key=value&key1=value1
post請求:form表單中獲取。
class MainHandler(tornado.web.RequestHandler): def get(self): self.write('hello world') #向瀏覽器輸出內容 self.write('<br/>') # 頁面解析html代碼 self.write('\n') # 頁面不能解析linux代碼,須要向瀏覽器輸出必須使用瀏覽器可以解析的代碼 self.write('hello world') class IndexHandler(tornado.web.RequestHandler): def get(self): name = self.get_argument('name','no') #獲取頁面傳遞過來的參數(獲取輸入信息) self.write(name+' hello ') application = tornado.web.Application( handlers=[ (r'/', MainHandler), # 路由表 (r'/index', IndexHandler), ]
請求結果以下:
討論:get_argument與get_arguments的異同: