摘要:簡介是使用編寫的一個強大的可擴展的服務器。是一個編寫對請求響應的框架。作為程序員,你的工作是編寫響應特定條件請求的響應的。注意不能序列化一個列表,但是字典是可以的。
1.Tornado簡介
tornado是使用Python編寫的一個強大的、可擴展的Web服務器。它在處理嚴峻的網絡流量時表現得足夠強健,但卻在創建和編寫時有著足夠的輕量級,并能夠被用在大量的應用和工具中。
tornado的安裝也很簡單,直接使用pip安裝即可:pip install tornado
2.Tornado路由映射我們已經知道了Tornado是什么了,現在讓我們看看它能做什么吧。我們首先從使用Tornado編寫一個簡單的Web應用開始。
Tornado是一個編寫對HTTP請求響應的框架。作為程序員,你的工作是編寫響應特定條件HTTP請求的響應的handler。下面是一個全功能的Tornado應用的基礎示例:
新建一個python file 命名為start1 往文件里加入一下代碼
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文件
workon py3env cd tornado_1 ls python start1.py
然后在瀏覽器地址欄中鍵入相應的ip地址與路由
*注意地址欄內填入ip地址(就是ubuntu里面ifconfig顯示的那個地址)再在后面加上":"再加上端口號
如:你的ip為 192.43.22.132 端口為9000
那么地址欄就該這么填 192.43.22.132:9000*
這是一個簡單,基礎的示例,接下來看一個更加復雜一點的示例。
start2.pyimport 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的值)
顯示如下
在端口后面加上不同的路徑,可以通過路由映射來做不同的事情。
在start2.py中添加以下代碼
#添加路由映射 (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不能序列化一個列表,但是字典是可以的。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44638.html
摘要:的非阻塞單線程的特點在這個模塊中體現。還有一個模塊引入,是用完成的這兩句就顯示了所謂命令行解析模塊的用途了。表示可以接收來自的請求了。以上把一個簡單的剖析。 As he walked by the sea of Galilee, he saw two brothers, Simon, who is called Peter, and Andrew his brother, cas...
摘要:對參數類型進行檢驗,這里為當參數類型不合適是會拋出一個異常。將使用的第二個參數值作為默認值。而請求將從格式中取得指定的文本。這里需要正則表達式相關的知識,到了后面的學習中,必要時再去深入學習。到目前我們使用了,還支持任何合法的請求。 參考書籍《Introduction to Tornado》1.1 Tornado是什么?Tornado是使用Python編寫的一個強大的、可擴展的Web服...
摘要:上一篇文章第一章異步及協程基礎第二節關鍵字下一篇文章第二章實戰演練開發網站第一節網站結構使用協程可以開發出類似同步代碼的異步行為。協程函數可以通過以下三張方式調用在本身是協程的函數內通過關鍵字調用。 上一篇文章:Python:Tornado 第一章:異步及協程基礎:第二節:Python關鍵字yield下一篇文章:Python:Tornado 第二章:實戰演練:開發Tornado網站:第...
摘要:在被收購之后,維護并繼續發展。設置是告訴應用在目錄尋找應用模板。設置告訴應用使用目錄里面的類似圖像文件等靜態文件。我們會在應用開發過程中,保持著調試器在后臺運行。這能提供高效的開發環境。我們會把回應狀態設為已創建。 編者注:我們發現了有趣的系列文章《30天學習30種新技術》,正在翻譯,一天一篇更新,年終禮包。下面是第23天的內容。 今天的《30天學習30種新技術》,我決定暫時放下...
閱讀 1130·2021-11-25 09:43
閱讀 1649·2021-09-13 10:25
閱讀 2614·2021-09-09 11:38
閱讀 3419·2021-09-07 10:14
閱讀 1730·2019-08-30 15:52
閱讀 653·2019-08-30 15:44
閱讀 3590·2019-08-29 13:23
閱讀 1989·2019-08-26 13:33