成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Tornado學(xué)習(xí)筆記(1)

ChanceWong / 3411人閱讀

摘要:對(duì)參數(shù)類型進(jìn)行檢驗(yàn),這里為當(dāng)參數(shù)類型不合適是會(huì)拋出一個(gè)異常。將使用的第二個(gè)參數(shù)值作為默認(rèn)值。而請(qǐng)求將從格式中取得指定的文本。這里需要正則表達(dá)式相關(guān)的知識(shí),到了后面的學(xué)習(xí)中,必要時(shí)再去深入學(xué)習(xí)。到目前我們使用了,還支持任何合法的請(qǐng)求。

參考書籍《Introduction to Tornado》
1.1 Tornado是什么?
Tornado是使用Python編寫的一個(gè)強(qiáng)大的、可擴(kuò)展的Web服務(wù)器。它在處理嚴(yán)峻的網(wǎng)絡(luò)流量時(shí)表現(xiàn)得足夠 強(qiáng)健,但卻在創(chuàng)建和編寫時(shí)有著足夠的輕量級(jí),并能夠被用在大量的應(yīng)用和工具中。此外,它還擁有處理安全性、用戶驗(yàn)證、社交網(wǎng)絡(luò)以及與外部服務(wù)(如數(shù)據(jù)庫和網(wǎng)站API) 進(jìn)行異步交互的工具。
1.2 Hello Tornado
下面是一個(gè)全功能的Tornado應(yīng)用的基礎(chǔ)示例:

import tornado.httpserver 
import tornado.ioloop 
import tornado.options 
import tornado.web

在程序的最頂部,我們需要導(dǎo)入一些Tornado模塊,Tornado還包含一些其他模塊,但是在這個(gè)例子中,我們最起碼需要包含著四個(gè)模塊。

from tornado.options import define, options 
define("port", default=8000, help="run on the given port", type=int)

這是一個(gè)有用的模塊(tornado.options)來從命令行中讀取設(shè)置。我們?cè)谶@里使用這個(gè)模塊指定我們的應(yīng)用監(jiān)聽HTTP請(qǐng)求的端口。
如果一個(gè)與define語句中同名的的設(shè)置在命令行中被給出,那么他將成為全局options的一個(gè)屬性。如果程序使用了--help,程序會(huì)打印出你在define函數(shù)中help指定的參數(shù)文本。如果沒有指定值,可以用default=所指定的值來代替。type對(duì)參數(shù)類型進(jìn)行檢驗(yàn),這里為int,當(dāng)參數(shù)類型不合適是會(huì)拋出一個(gè)異常。

class IndexHandler(tornado.web.RequestHandler):    
def get(self):        
greeting = self.get_argument("greeting", "Hello")        
self.write(greeting + ", friendly user!")

這個(gè)例子中只定義了一個(gè)GET方法,在以后的實(shí)際應(yīng)用中我們可以用到GET POST 等其他的HTTP方法。
這里的get_argumentRequestHandler的內(nèi)建方法,從一個(gè)查詢字符串中獲取greeting的值。Tornado將使用get_argument的第二個(gè)參數(shù)值作為默認(rèn)值。
這里的write方法也是RequestHandler種的一個(gè)有用的方法,它將字符串形式的參數(shù)寫入HTTP響應(yīng)中。在這里是將greeting參數(shù)提供的值寫入greeting中,并寫到響應(yīng)中。

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.instance().start()

Demo:

import tornado.httpserver 
import tornado.ioloop 
import tornado.options 
import tornado.web

from tornado.options import define, options 
define("port", default=8000, help="run on the given port", type=int)

class IndexHandler(tornado.web.RequestHandler):    
def get(self):        
greeting = self.get_argument("greeting", "Hello")        
self.write(greeting + ", friendly user!")

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.instance().start()

到這里 這個(gè)簡(jiǎn)單的例子便可以實(shí)現(xiàn)了。
可以在命令行中實(shí)現(xiàn),也可以在IDE中實(shí)現(xiàn)(個(gè)人使用的是Pycharm)

接下來是一個(gè)稍微復(fù)雜一點(diǎn)的例子,對(duì)字符串進(jìn)行操作的例子:

import textwrap
import tornado.httpserver 
import tornado.ioloop import tornado.options 
import tornado.web
from tornado.options import define, options 
define("port", default=8000, help="run on the given port", type=int)
class ReverseHandler(tornado.web.RequestHandler):    
    def get(self, input):        
        self.write(input[::-1])
class WrapHandler(tornado.web.RequestHandler):    
    def post(self):        
        text = self.get_argument("text")        
        width = self.get_argument("width", 40)        
        self.write(textwrap.fill(text, int(width)))
if __name__ == "__main__":    
    tornado.options.parse_command_line()    
    app = tornado.web.Application(        
        handlers=[            
            (r"/reverse/(w+)", ReverseHandler),            
            (r"/wrap", WrapHandler)        
            ]
        )    
    http_server = tornado.httpserver.HTTPServer(app)    
    http_server.listen(options.port)    
    tornado.ioloop.IOLoop.instance().start()

這里的GET請(qǐng)求會(huì)返回URL路徑中指定的字符串的反轉(zhuǎn)格式。如/reverse/tornado返回odanrot。
POST請(qǐng)求將從text格式中取得指定的文本。
這里需要正則表達(dá)式相關(guān)的知識(shí),到了后面的學(xué)習(xí)中,必要時(shí)再去深入學(xué)習(xí)。
到目前我們使用了POST GET,Tornado還支持任何合法的HTTP請(qǐng)求。

HTTP狀態(tài)碼

404 Not Found #路徑無法匹配時(shí)返回404
400 Bad Request #調(diào)用一個(gè)么有默認(rèn)值的get_argument函數(shù),并且沒有找到給定名稱的參數(shù),返回400
405 Method Not Allowed #傳入的請(qǐng)求使用了沒有定義過的HTTP方法,返回405
500 Internal Server Error #當(dāng)遇到任何不能讓其退出的錯(cuò)誤,也會(huì)返回500

PS:
看完第一章有一個(gè)基本的了解,但是關(guān)于web方面的知識(shí)還是比較少,譬如http方面。需要同時(shí)看《TCP/IP》
而且第一次寫這種筆記的話,有些贅述,但是好在可以讓自己更好的了解,有一個(gè)整理和總結(jié)對(duì)于學(xué)習(xí)而言亦有幫助。共勉

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37651.html

相關(guān)文章

  • tornado學(xué)習(xí)筆記1)HTTP請(qǐng)求及API測(cè)試

    摘要:首先是的請(qǐng)求接著是的請(qǐng)求在本次分享中,我們介紹了的請(qǐng)求,包括請(qǐng)求,并將介紹如何使用和來測(cè)試該本次分享到此結(jié)束,歡迎大家交流 ??Tornado是現(xiàn)在的主流 Web 服務(wù)器框架,它與大多數(shù) Python 的框架有著明顯的區(qū)別:它是非阻塞式服務(wù)器,而且速度相當(dāng)快。得利于其非阻塞的方式和對(duì) epoll 的運(yùn)用,Tornado 每秒可以處理數(shù)以千計(jì)的連接,這意味著對(duì)于實(shí)時(shí) Web 服務(wù)來說,T...

    EddieChan 評(píng)論0 收藏0
  • Tornado學(xué)習(xí)筆記(2)

    摘要:而這里的方法則是告訴來讀取模板文件,并將結(jié)果返回給瀏覽器。依舊可以使用,等條件控制語句,但是要記得以結(jié)尾。替換字符串中的字符為編碼形式。模塊模塊是封裝模板中包含的標(biāo)記樣式以及行為的可復(fù)用組件。 表單和模板 import os.path import tornado.httpserver import tornado.ioloop import tornado.options impo...

    tianyu 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.30 - 學(xué)習(xí) Python 來做一些神奇好玩的事情吧

    摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測(cè)形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡(jiǎn)稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡(jiǎn)明扼要地說明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個(gè)提問: pyth...

    lifesimple 評(píng)論0 收藏0
  • Tornado源碼閱讀筆記tornado.web.Application

    摘要:從的開始分析的源碼很容易可以看出,通過繼承類定義自己的處理類,來處理請(qǐng)求。類的對(duì)象來處理的路由將于處理類組成,關(guān)聯(lián)起來。調(diào)用的來將和綁定在一起初始化一個(gè)的對(duì)象,由其來處理請(qǐng)求的路由,來利用建立的規(guī)則。 從tornado的 Hello,world 開始分析tornado的源碼 pythonimport tornado.ioloop import tornado.web class M...

    Cympros 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<