tornado是使用Python編寫的一個強大的、可擴展的Web服務器。它在處理嚴峻的網絡流量時表現得足夠強健,但卻在建立和編寫時有着足夠的輕量級,並可以被用在大量的應用和工具中。python
tornado的安裝也很簡單,直接使用pip安裝便可:pip install tornado程序員
咱們已經知道了Tornado是什麼了,如今讓咱們看看它能作什麼吧。咱們首先從使用Tornado編寫一個簡單的Web應用開始。web
Tornado是一個編寫對HTTP請求響應的框架。做爲程序員,你的工做是編寫響應特定條件HTTP請求的響應的handler。下面是一個全功能的Tornado應用的基礎示例:
新建一個python file 命名爲start1 往文件里加入一下代碼json
import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("hello ") application = tornado.web.Application([ (r"/",MainHandler), ]) if __name__ == "__main__": application.listen(8000) #在這裏須要設置端口轉發,把主機的8000端口轉發到虛擬機的8000端口 tornado.ioloop.IOLoop.instance().start()
點擊tool--> start SSH session
在pycharm 下方的terminal中輸入如下命令執行這個py文件ubuntu
workon py3env cd tornado_1 ls python start1.py
而後在瀏覽器地址欄中鍵入相應的ip地址與路由
*注意地址欄內填入ip地址(就是ubuntu裏面ifconfig顯示的那個地址)再在後面加上':'再加上端口號
如:你的ip爲 192.43.22.132 端口爲9000
那麼地址欄就該這麼填 192.43.22.132:9000*瀏覽器
這是一個簡單,基礎的示例,接下來看一個更加複雜一點的示例。服務器
import tornado.httpserver #幫助啓動tornado服務器 import tornado.ioloop #開啓tornado循環,後臺等待 import tornado.options #命令行中讀取設置 import tornado.web #RequestHandler 和 Application 在這個模塊裏面 from tornado.options import define, options #define用來定義默認端口號 # 定義一個默認端口 define("port", default=9000, help="run on the given port", type=int) # 定義一個事件處理的類 class IndexHandler(tornado.web.RequestHandler): def get(self): # 這是get方法 self.write('abc') # 往頁面中寫入字符串abc if __name__ == "__main__": tornado.options.parse_command_line() app = tornado.web.Application( handlers=[ (r"/", IndexHandler), # 路由映射 當訪問路由/的時候 調用IndexHandler類來處理 ] ) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) # 監聽這個端口 tornado.ioloop.IOLoop.instance().start() # 啓動這個服務
關掉上執行中的start1.py (Ctrl + C)
將這個新建的文件更新到ubuntu中
再執行start2.py文件
而後在瀏覽器地址欄中輸入ip:9000 (咱們剛纔換了一下port的值)
顯示以下網絡
在端口後面加上不一樣的路徑,能夠經過路由映射來作不一樣的事情。session
在start2.py中添加如下代碼app
#添加路由映射 (r"/aaa", AaaHandler), #寫對應的類 class AaaHandler(tornado.web.RequestHandler): def get(self): self.write('aaa') #有了不一樣的映射以後就能夠實現各類需求
在上面的代碼中,self.write()就是輸出,能夠把內容輸出到瀏覽器。
注意 write輸出的內容 是python對象序列化的對象 即json對象
在上面的代碼中,self.write()就是輸出,能夠把內容輸出到瀏覽器。
可是若是想獲得輸入,可使用查詢字符串。
在start2.py中加入一下代碼
#添加路由映射 (r"/gre", GreHandler), #添加處理類 class GreHandler(tornado.web.RequestHandler): def get(self): gre = self.get_argument('aaa','hello') #獲得網頁上aaa的值 默認爲hello self.write(gre + ',frindely user!')
這裏的get_argument能夠獲得瀏覽器地址欄中的參數輸入。
參數改成123
參數輸入的格式爲路由後+?+變量賦值
使用get_arguments來獲取查詢字符串列表。
注意:write不能序列化一個列表,可是字典是能夠的。