国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Tornado-02、編寫第一個tornado程序

silencezwm / 961人閱讀

摘要:簡介是使用編寫的一個強(qiáng)大的可擴(kuò)展的服務(wù)器。是一個編寫對請求響應(yīng)的框架。作為程序員,你的工作是編寫響應(yīng)特定條件請求的響應(yīng)的。注意不能序列化一個列表,但是字典是可以的。

1.Tornado簡介

tornado是使用Python編寫的一個強(qiáng)大的、可擴(kuò)展的Web服務(wù)器。它在處理嚴(yán)峻的網(wǎng)絡(luò)流量時表現(xiàn)得足夠強(qiáng)健,但卻在創(chuàng)建和編寫時有著足夠的輕量級,并能夠被用在大量的應(yīng)用和工具中。

tornado的安裝也很簡單,直接使用pip安裝即可:pip install tornado

2.Tornado路由映射

我們已經(jīng)知道了Tornado是什么了,現(xiàn)在讓我們看看它能做什么吧。我們首先從使用Tornado編寫一個簡單的Web應(yīng)用開始。

Tornado是一個編寫對HTTP請求響應(yīng)的框架。作為程序員,你的工作是編寫響應(yīng)特定條件HTTP請求的響應(yīng)的handler。下面是一個全功能的Tornado應(yīng)用的基礎(chǔ)示例:
新建一個python file 命名為start1 往文件里加入一下代碼

start1.py

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) #在這里需要設(shè)置端口轉(zhuǎn)發(fā),把主機(jī)的8000端口轉(zhuǎn)發(fā)到虛擬機(jī)的8000端口
    tornado.ioloop.IOLoop.instance().start()


點(diǎn)擊tool--> start SSH session
在pycharm 下方的terminal中輸入以下命令執(zhí)行這個py文件


workon py3env
cd tornado_1
ls
python start1.py


然后在瀏覽器地址欄中鍵入相應(yīng)的ip地址與路由
*注意地址欄內(nèi)填入ip地址(就是ubuntu里面ifconfig顯示的那個地址)再在后面加上":"再加上端口號
如:你的ip為 192.43.22.132 端口為9000
那么地址欄就該這么填 192.43.22.132:9000*



這是一個簡單,基礎(chǔ)的示例,接下來看一個更加復(fù)雜一點(diǎn)的示例。

start2.py
import tornado.httpserver  #幫助啟動tornado服務(wù)器
import tornado.ioloop      #開啟tornado循環(huán),后臺等待
import tornado.options       #命令行中讀取設(shè)置
import tornado.web         #RequestHandler 和 Application 在這個模塊里面

from tornado.options import define, options   #define用來定義默認(rèn)端口號

# 定義一個默認(rèn)端口
define("port", default=9000, help="run on the given port", type=int)


# 定義一個事件處理的類
class IndexHandler(tornado.web.RequestHandler):
    def get(self):  # 這是get方法
        self.write("abc")  # 往頁面中寫入字符串a(chǎn)bc  


if __name__ == "__main__":
    tornado.options.parse_command_line()

    app = tornado.web.Application(  
        handlers=[  
        (r"/", IndexHandler),  # 路由映射 當(dāng)訪問路由/的時候 調(diào)用IndexHandler類來處理
        ]
    )
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)  # 監(jiān)聽這個端口
    tornado.ioloop.IOLoop.instance().start()  # 啟動這個服務(wù)

關(guān)掉上執(zhí)行中的start1.py (Ctrl + C
將這個新建的文件更新到ubuntu中
再執(zhí)行start2.py文件
然后在瀏覽器地址欄中輸入ip:9000 (我們剛才換了一下port的值)
顯示如下



在端口后面加上不同的路徑,可以通過路由映射來做不同的事情。

在start2.py中添加以下代碼


#添加路由映射
(r"/aaa", AaaHandler),

#寫對應(yīng)的類
class AaaHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("aaa")
    
#有了不同的映射之后就可以實(shí)現(xiàn)各種需求


在上面的代碼中,self.write()就是輸出,可以把內(nèi)容輸出到瀏覽器。
注意 write輸出的內(nèi)容 是python對象序列化的對象 即json對象

3.Tornado的項(xiàng)目結(jié)構(gòu)的輸入與輸出

在上面的代碼中,self.write()就是輸出,可以把內(nèi)容輸出到瀏覽器。

但是如果想得到輸入,可以使用查詢字符串。
在start2.py中加入一下代碼

#添加路由映射
(r"/gre", GreHandler),

#添加處理類
class GreHandler(tornado.web.RequestHandler):
    def get(self):
        gre = self.get_argument("aaa","hello") #得到網(wǎng)頁上aaa的值 默認(rèn)為hello
        self.write(gre + ",frindely user!")

這里的get_argument可以得到瀏覽器地址欄中的參數(shù)輸入。

默認(rèn)的情況
有參數(shù)的情況

參數(shù)改為123
參數(shù)輸入的格式為路由后+?+變量賦值


使用get_arguments來獲取查詢字符串列表。

注意:write不能序列化一個列表,但是字典是可以的。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44638.html

相關(guān)文章

  • [零基礎(chǔ)學(xué)python]Hello,一個網(wǎng)頁分析

    摘要:的非阻塞單線程的特點(diǎn)在這個模塊中體現(xiàn)。還有一個模塊引入,是用完成的這兩句就顯示了所謂命令行解析模塊的用途了。表示可以接收來自的請求了。以上把一個簡單的剖析。 As he walked by the sea of Galilee, he saw two brothers, Simon, who is called Peter, and Andrew his brother, cas...

    Steve_Wang_ 評論0 收藏0
  • Tornado學(xué)習(xí)筆記(1)

    摘要:對參數(shù)類型進(jìn)行檢驗(yàn),這里為當(dāng)參數(shù)類型不合適是會拋出一個異常。將使用的第二個參數(shù)值作為默認(rèn)值。而請求將從格式中取得指定的文本。這里需要正則表達(dá)式相關(guān)的知識,到了后面的學(xué)習(xí)中,必要時再去深入學(xué)習(xí)。到目前我們使用了,還支持任何合法的請求。 參考書籍《Introduction to Tornado》1.1 Tornado是什么?Tornado是使用Python編寫的一個強(qiáng)大的、可擴(kuò)展的Web服...

    ChanceWong 評論0 收藏0
  • Python:Tornado 一章:異步及協(xié)程基礎(chǔ):三節(jié):協(xié)程

    摘要:上一篇文章第一章異步及協(xié)程基礎(chǔ)第二節(jié)關(guān)鍵字下一篇文章第二章實(shí)戰(zhàn)演練開發(fā)網(wǎng)站第一節(jié)網(wǎng)站結(jié)構(gòu)使用協(xié)程可以開發(fā)出類似同步代碼的異步行為。協(xié)程函數(shù)可以通過以下三張方式調(diào)用在本身是協(xié)程的函數(shù)內(nèi)通過關(guān)鍵字調(diào)用。 上一篇文章:Python:Tornado 第一章:異步及協(xié)程基礎(chǔ):第二節(jié):Python關(guān)鍵字yield下一篇文章:Python:Tornado 第二章:實(shí)戰(zhàn)演練:開發(fā)Tornado網(wǎng)站:第...

    charles_paul 評論0 收藏0
  • Day 25: 聯(lián)合Tornado、MongoDB 和 AngularJS 進(jìn)行應(yīng)用開發(fā)

    摘要:在被收購之后,維護(hù)并繼續(xù)發(fā)展。設(shè)置是告訴應(yīng)用在目錄尋找應(yīng)用模板。設(shè)置告訴應(yīng)用使用目錄里面的類似圖像文件等靜態(tài)文件。我們會在應(yīng)用開發(fā)過程中,保持著調(diào)試器在后臺運(yùn)行。這能提供高效的開發(fā)環(huán)境。我們會把回應(yīng)狀態(tài)設(shè)為已創(chuàng)建。 編者注:我們發(fā)現(xiàn)了有趣的系列文章《30天學(xué)習(xí)30種新技術(shù)》,正在翻譯,一天一篇更新,年終禮包。下面是第23天的內(nèi)容。 今天的《30天學(xué)習(xí)30種新技術(shù)》,我決定暫時放下...

    hsluoyz 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<