乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Github排名中的Python web框架Flask學(xué)習(xí)方法,非常受用!

       xiaoyimin 2019-02-11

      flask最近終于發(fā)布了它的1.0版本更新,從項(xiàng)目開源到最近的1.0版本flask已經(jīng)走過了8個(gè)年頭。

      運(yùn)行python app.py,訪問http://localhost:5000/就能看到輸出了Hello World!flask誕生在八年前的愚人節(jié),原本只是作者隨便寫著玩的,想不到一下子就流行起來了。在這八年期間,flask從未發(fā)行過一個(gè)正式的版本,不過它依然成為了github內(nèi)最受大家喜歡的Python web框架 ;flask內(nèi)核內(nèi)置了兩個(gè)最重要的組件,其它所有的組件都是通過易擴(kuò)展的插件系統(tǒng)集成進(jìn)來的。這兩個(gè)內(nèi)置的組件分別是werkzeug和jinja2。

      werkzeug用于編寫Python WSGI程序的工具包,在開源社區(qū)備受喜愛,它的源碼是Python技術(shù)領(lǐng)域最值得閱讀的開源庫。

      運(yùn)行python wsgi.py打開瀏覽器訪問http://localhost:4000/就可以看到頁面輸出了Hello World!

      jinja2是一個(gè)功能極為強(qiáng)大的模板系統(tǒng),它完美支持unicode中文,每個(gè)模板都運(yùn)行在安全的沙箱環(huán)境中,使用jinja2編寫的模板代碼非常優(yōu)美。

      werkzeug和jinja2這兩個(gè)庫的一起特點(diǎn)是編寫的代碼賞心悅目,作者Armin Ronacher挑選這兩個(gè)庫來作為flask的柱石闡明作者有十分挑剔的代碼品味。作者是一位來自澳大利亞的帥哥!

      歐了歐了 咱們一起來體會(huì)flask的奇特魅力吧!

      安裝flask

      pip install flask

      圓周率計(jì)算API

      圓周率可以使用正整數(shù)的平方倒數(shù)之和求得,當(dāng)這個(gè)級(jí)數(shù)趨于無限時(shí),值會(huì)越來越接近圓周率。

      運(yùn)轉(zhuǎn)python flask_pi.py,翻開瀏覽器拜訪http://localhost:5000/pi?n=1000000,能夠看到頁面輸出3.14159169866,這個(gè)值同圓周率現(xiàn)已非常挨近。

      留意pi的回來值不能是浮點(diǎn)數(shù),所以必須運(yùn)用str轉(zhuǎn)換成字符串

      再仔細(xì)觀察代碼,你還會(huì)留意到一個(gè)特別的變量request,它看起來似乎是一個(gè)全局變量。從全局變量里拿當(dāng)時(shí)懇求參數(shù),這非常奇怪。如果在多線程環(huán)境中,該怎么確保每個(gè)線程拿到的都是當(dāng)時(shí)線程正在處理的懇求參數(shù)呢?所以它不能是全局變量,它是線程局部變量,線程局部變量外表上和全局變量沒有不同,但是在拜訪線程局部變量時(shí),每個(gè)線程得到的都是當(dāng)時(shí)線程內(nèi)部同享的目標(biāo)。

      緩存核算成果

      為了防止重復(fù)核算,咱們將現(xiàn)已核算的pi(n)值緩存起來,下次就能夠直接查詢。一起咱們不再只回來一個(gè)單純的字符串,咱們回來一個(gè)json串,里邊有一個(gè)字段cached用來標(biāo)識(shí)當(dāng)時(shí)的成果是否從緩存中直接獲取的。

      運(yùn)行python flask_pi.py,打開瀏覽器訪問http://localhost:5000/pi?n=1000000,可以看到頁面輸出

      讀者也許會(huì)問,為什么緩存類PiCache需要使用RLock呢?這是因?yàn)榭紤]到多線程環(huán)境下Python的字典讀寫不是完全線程安全的,需要使用鎖來保護(hù)一下數(shù)據(jù)結(jié)構(gòu)。

      分布式緩存

      上面的緩存僅僅是內(nèi)存緩存,進(jìn)程重啟后,緩存結(jié)果消失,下次計(jì)算又得重新開始。

      如果開啟第二個(gè)端口5001來提供服務(wù),那這第二個(gè)進(jìn)程也無法享受第一個(gè)進(jìn)程的內(nèi)存緩存,而必須重新計(jì)算。所以這里要引入分布式緩存Redis來共享計(jì)算緩存,避免跨進(jìn)程重復(fù)計(jì)算,避免重啟重新計(jì)算。

      運(yùn)行python flask_pi.py,打開瀏覽器訪問http://localhost:5000/pi?n=1000000,可以看到頁面輸出

      重啟進(jìn)程,再次刷新頁面,能夠看書頁面輸出的cached字段依然是true,闡明緩存成果不再由于進(jìn)程重啟而丟掉。

      MethodView

      寫過Django的朋友們可能會(huì)問,F(xiàn)lask是否支撐類方法的API編寫方法,答復(fù)是必定的。下面我們運(yùn)用Flask原生支撐的MethodView來改寫一下上面的服務(wù)。

      咱們完成了MethodView的get辦法,闡明該API僅支撐HTTP懇求的GET辦法。假如要支撐POST、PUT和DELETE辦法,需要用戶自己再去完成這些辦法。

      flask默許的MethodView挺好用,可是也不行好用,它無法在一個(gè)類里供給多個(gè)不同URL名稱的API效勞。所以接下來咱們引進(jìn)flask的擴(kuò)展flask-classy來解決這個(gè)問題。

      小試flask擴(kuò)展flask-classy

      運(yùn)用擴(kuò)展的第一步是安裝擴(kuò)展pip install flask-classy,然后咱們?cè)谕粋€(gè)類里再加一個(gè)新的API效勞,核算斐波那契級(jí)數(shù)。

      訪問http://localhost:5000/fib/100,我們可以看到頁面輸出了

      好了,關(guān)于Python web框架Flask的分享就到這里,如果你跟我一樣都喜歡python,想成為一名優(yōu)秀的程序員,也在學(xué)習(xí)python的道路上奔跑,歡迎你加入python學(xué)習(xí)群:839383765 群內(nèi)每天都會(huì)分享最新業(yè)內(nèi)資料,分享python免費(fèi)課程,共同交流學(xué)習(xí),讓學(xué)習(xí)變(編)成(程)一種習(xí)慣!

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多