亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Bottle的Python網(wǎng)絡(luò)應(yīng)用開發(fā)

        2014-08-08 15:45:37余斌
        無線互聯(lián)科技 2014年6期
        關(guān)鍵詞:網(wǎng)絡(luò)

        余斌

        摘要:Python語言在網(wǎng)絡(luò)應(yīng)用開發(fā)中占有重要的位置。Bottle是一個Python網(wǎng)絡(luò)應(yīng)用開發(fā)微框架。本文以一個簡單日志系統(tǒng)為例,介紹了運用Bottle開發(fā)網(wǎng)絡(luò)應(yīng)用基本方法。

        關(guān)鍵詞:Python;WSGI;Bottle;網(wǎng)絡(luò);框架1引言

        Python是一種完全面向?qū)ο蟮膭討B(tài)腳本語言。它以強制縮進來區(qū)分程序區(qū)塊,代碼可讀性強;采用多種高級數(shù)據(jù)結(jié)構(gòu),應(yīng)用開發(fā)快速高效;擁有豐富、高質(zhì)量的類庫,可滿足各種類型應(yīng)用開發(fā)要求。Python作為一種通用程序設(shè)計語言,常應(yīng)用于網(wǎng)絡(luò)應(yīng)用、科學(xué)計算、圖像處理等領(lǐng)域。

        2Bottle簡述

        隨著互聯(lián)網(wǎng)技術(shù)快速發(fā)展,網(wǎng)絡(luò)應(yīng)用開發(fā)逐漸成為軟件開發(fā)的一個主流方向。早期開發(fā)人員用Python開發(fā)CGI程序,必須手動處理網(wǎng)絡(luò)協(xié)議解析,頁面請求響應(yīng)等細節(jié)。為了簡化開發(fā)過程,Python定義了Web服務(wù)器網(wǎng)關(guān)接口即WSGI。著名的網(wǎng)絡(luò)應(yīng)用框架有Django,TurboGears,Zope等。它們網(wǎng)絡(luò)應(yīng)用功能全面,在網(wǎng)絡(luò)開發(fā)中使用十分便捷。

        Bottle是一個快速,簡單,輕量級的網(wǎng)絡(luò)應(yīng)用微框架,它只提供請求映射、頁面輸出等必要的功能,而給予開發(fā)者更高靈活性以選擇其它組件實現(xiàn)額外的功能。Bottle僅由一個文件構(gòu)成,并且不依賴于Python標準庫以外的第三方類庫,保證了該框架的可移植性。Bottle還可以通過插件的形式支持ORM方式數(shù)據(jù)庫訪問,接入其它模板引擎,部署其它符合WSGI標準的WEB服務(wù)器,確保了框架高度可擴展性。

        3開發(fā)實例

        如圖所示,網(wǎng)絡(luò)用戶通過客戶端向服務(wù)器發(fā)出服務(wù)請求,服務(wù)器根據(jù)請求調(diào)用相應(yīng)的網(wǎng)絡(luò)應(yīng)用程序。網(wǎng)絡(luò)應(yīng)用程序通過解析請求地址調(diào)用相應(yīng)方法,該方法通過數(shù)據(jù)庫訪問接口對數(shù)據(jù)庫進行操作,并將操作結(jié)果返回網(wǎng)絡(luò)應(yīng)用程序。網(wǎng)絡(luò)應(yīng)用框架決定以何種方式呈現(xiàn)這些數(shù)據(jù),并通過WEB服務(wù)器發(fā)往客戶端??蛻舳私邮諗?shù)據(jù),解析HTML代碼,呈現(xiàn)結(jié)果,完成一次完整的服務(wù)請求。結(jié)合網(wǎng)絡(luò)應(yīng)用程序的工作過程,我們以一個簡單日志管理系統(tǒng)開發(fā)來介紹基于Bottle的網(wǎng)絡(luò)應(yīng)用開發(fā)流程。

        3.1 安裝Bottle

        從Bottlepy.org下載Bottle源文件,并將該源文件放置于項目所在的目錄即完成安裝。在聯(lián)網(wǎng)情況下,在控制臺執(zhí)行“easy_install bottle”,亦可自動安裝Bottle。

        3.2 配置數(shù)據(jù)庫

        在項目目錄下執(zhí)行以下代碼即可創(chuàng)建SQLite3后臺數(shù)據(jù)庫。

        $ sqlite3 blog.db < blog.sql

        3.3 映射URL

        網(wǎng)絡(luò)應(yīng)用框架最重要的功能是將瀏覽器對服務(wù)器地址的請求映射到Python網(wǎng)絡(luò)程序的方法或者對象上。Bottle利用修飾器@route可靈活配置URL路由。在本應(yīng)用中,@route('/blog')與@route('/blog/page/#[0-9]*#')都映射到blog方法上。瀏覽器請求/blog或類似頁面時,Bottle將其轉(zhuǎn)接到blog方法上,其中,”/blog”實現(xiàn)靜態(tài)的路由映射,而”/blog/page/:pageid#[0-9]*#”則利用正則表達式實現(xiàn)動態(tài)匹配路由映射。由該方法對以上請求進行響應(yīng)。

        3.4 方法實現(xiàn)

        現(xiàn)以一個簡單的回調(diào)顯示函數(shù)blog為例說明Python對數(shù)據(jù)庫的操作。該函數(shù)主要是實現(xiàn)對數(shù)據(jù)庫的查詢并在瀏覽器中顯示查詢結(jié)果。主要代碼如下所示。

        首先,連接數(shù)據(jù)庫

        conn = sqlite3.connect('blog.db')。

        然后,定位數(shù)據(jù)庫當前位置

        c = conn.cursor()。

        接著,在當前位置執(zhí)行sql查詢

        c.execute("SELECT * FROM blog " )

        最后,獲得查詢結(jié)果

        results = c.fetchall()。

        將查詢結(jié)果作為參數(shù)傳遞給Bottle的模板對象template,框架Bottle即可自動實現(xiàn)將查詢結(jié)果轉(zhuǎn)發(fā)到WEB服務(wù)器。

        對數(shù)據(jù)庫其他操作,如插入,刪除,修改的實現(xiàn)也都比較類似,在此不再一一贅述。

        3.5 瀏覽器輸出

        Bottle可通過template(‘templatename,args)方法來調(diào)用其內(nèi)建快速簡潔的模板系統(tǒng),其中templatename為所調(diào)用的模板名,args為給模板傳入的參數(shù)。模板內(nèi)可用%include語句引入其它模板,也可嵌入Python的for循環(huán)與if - else判斷語句。例如,在模板內(nèi)嵌入以下語句,就可將結(jié)果中的每個項目都輸出到瀏覽器中。

        3.6 分頁顯示

        當查詢數(shù)據(jù)庫的結(jié)果較多時,一個頁面往往無法容納所有項目。我們可利用SQLite3分頁查詢來實現(xiàn)較多日志的分頁顯示。如:SELECT * FROM blog LIMIT 5 OFFSET 0,實現(xiàn)自第1個項目開始取回5個項目。

        3.7 表單處理

        Bottle用request對象的request.GET.get()方法來獲得瀏覽器的數(shù)據(jù)。如有多個參數(shù)需要獲取,則可以多次調(diào)用request.GET.get()方法來實現(xiàn),并對獲取的數(shù)據(jù)可以再進行進一步的處理。

        3.8 其它內(nèi)置工具

        Bottle還提供許多內(nèi)置工具,給予程序員在文件上傳,cookies處理,HTTP元數(shù)據(jù)轉(zhuǎn)化功能等方面的許多便利,具體可參考Bottle的API文檔。

        4性能測試

        將代碼存儲為一個Python腳本文件,如app.py,在控制臺下運行該文件,網(wǎng)絡(luò)應(yīng)用程序即完成最簡單的部署。為檢驗網(wǎng)絡(luò)應(yīng)用程序性能,我們采用Apache Benchmark在本機上對應(yīng)用進行壓力測試。測試結(jié)果表明,Bottle內(nèi)置單線程WEB服務(wù)器并發(fā)特性不是很好,而當部署專門的WEB服務(wù)器后,其并發(fā)響應(yīng)性能有明顯提升。對于數(shù)據(jù)庫訪問并發(fā)度高的網(wǎng)絡(luò)應(yīng)用,選用支持并發(fā)訪問數(shù)據(jù)庫系統(tǒng)如MySQL,PostgreSQL等可提高網(wǎng)絡(luò)應(yīng)用穩(wěn)定性。

        5結(jié)論

        網(wǎng)絡(luò)應(yīng)用框架作為一種對網(wǎng)絡(luò)應(yīng)用開發(fā)的封裝,在實際開發(fā)中大大提高了開發(fā)人員的開發(fā)效率。通過一個日志管理實例的實現(xiàn),我們可以看到利用網(wǎng)絡(luò)應(yīng)用框架Bottle構(gòu)建內(nèi)容管理系統(tǒng)等基于數(shù)據(jù)庫的網(wǎng)絡(luò)應(yīng)用十分快捷高效。實驗表明,Bottle比較適合輕型網(wǎng)絡(luò)應(yīng)用開發(fā),在進行相應(yīng)擴展以后,Bottle也可具有較好的網(wǎng)絡(luò)服務(wù)性能。

        [參考文獻]

        [1]http://bottlepy.org/docs/dev/index.html.

        [2]http://www.python.org.

        [3]Magnus Lie Hetland Beginning Python:From Novice to Professional [M].USA:Apress,2008.

        猜你喜歡
        網(wǎng)絡(luò)
        計算機網(wǎng)絡(luò)管理技術(shù)探析
        芻議計算機網(wǎng)絡(luò)信息化管理
        油氣集輸系統(tǒng)信息化發(fā)展形勢展望
        基于網(wǎng)絡(luò)的信息資源組織與評價現(xiàn)狀及發(fā)展趨勢研究
        基于網(wǎng)絡(luò)的中學(xué)閱讀指導(dǎo)
        考試周刊(2016年79期)2016-10-13 21:50:36
        新形勢下地市報如何運用新媒體走好群眾路線
        中國記者(2016年6期)2016-08-26 13:02:28
        丰满少妇三级全黄| 免费高清视频在线观看视频| 中文字幕日韩熟女av| 国产精品久久一区二区蜜桃| 国产精品毛片av毛片一区二区| 日韩中文字幕有码午夜美女| 久久精品国产清自在天天线| 熟女少妇在线视频播放| 成年女人毛片免费视频| 91精品国产福利尤物免费| 岛国视频在线无码| 亚洲二区精品婷婷久久精品| 日本a级免费大片网站| 射精区-区区三区| 久久综合给合综合久久| 娇妻玩4p被三个男人伺候电影| 麻豆变态另类视频在线观看| 91久久精品人妻一区二区| 日本免费精品免费视频| 日本道免费一区二区三区日韩精品 | av一区二区三区高清在线看| av免费在线国语对白| 亚洲国产精品无码一线岛国| 丰满少妇高潮惨叫久久久一| 色婷婷综合中文久久一本| 国产亚洲精久久久久久无码苍井空| 亚洲综合色婷婷七月丁香| 亚洲精品中文字幕一二三| 午夜视频国产在线观看| 精品区2区3区4区产品乱码9| 久久久久亚洲精品无码网址| 欧美综合区| 免费女同毛片在线不卡| 夜夜高潮夜夜爽免费观看| 摸丰满大乳奶水www免费| 午夜无码国产理论在线| 91国视频| 亚洲最大av免费观看| 精品亚洲在线一区二区| 中国免费看的片| 无码人妻久久一区二区三区免费 |