Posted on 2012-03-02 20:25
RTY 閱讀(401)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
Python
最近,Google在其Google App Engine(以下簡(jiǎn)稱GAE)官方博客上宣布正式支持Python 2.7,對(duì)開發(fā)者來(lái)說(shuō)又多了一種選擇。
GAE在幾個(gè)月之前實(shí)驗(yàn)性的引入了Python 2.7環(huán)境,此后一直在修改缺陷和進(jìn)行優(yōu)化。隨著這次Python 2.7的正式支持,相信對(duì)開發(fā)人員更有幫助:
首先,它支持程序利用并發(fā)請(qǐng)求,幫助開發(fā)者構(gòu)建更加穩(wěn)定、高效的應(yīng)用。如果你的應(yīng)用沒(méi)有完全利用CPU,那么你現(xiàn)在有機(jī)會(huì)通過(guò)并發(fā)請(qǐng)求來(lái)降低實(shí)例的數(shù)量。
同時(shí),我們還增加了開發(fā)者迫切需要的工具庫(kù),包括PIL、NumPy和lxml等,這些庫(kù)已經(jīng)被開發(fā)者提了將近兩千次了。
通過(guò)使用GAE,用戶可以在Google 基礎(chǔ)架構(gòu)上運(yùn)行網(wǎng)絡(luò)應(yīng)用程序,目前GAE支持使用幾種編程語(yǔ)言編寫的應(yīng)用程序,包括Java、Python(2.5和2.7)、Go等語(yǔ)言。
相比2.5版,Python 2.7提供了更多的特性和工具庫(kù),開發(fā)者可以更加得心應(yīng)手:
- 多線程——2.5不支持此特性,在2.7中,開發(fā)者可以利用多線程庫(kù)。單個(gè)請(qǐng)求中的所有線程必須在請(qǐng)求時(shí)限(在線請(qǐng)求為60秒,離線請(qǐng)求為10分鐘)之前完成。
- 并發(fā)請(qǐng)求——2.5不支持此特性,現(xiàn)在開發(fā)者可以在GAE中修改配置來(lái)支持并發(fā)請(qǐng)求。
- 字節(jié)碼修改——在2.5版本中由于運(yùn)行時(shí)的限制無(wú)法修改字節(jié)碼,Python 2.7不再包括此限制。生成和處理字節(jié)碼的工具庫(kù)可以在運(yùn)行時(shí)正常工作。
- 字節(jié)碼上傳——2.5版不支持,Python 2.7可以上傳.pyc文件,但是不能和.py一起,但是可以上傳包含.py和.pyc文件的.zip文件。
除此之外,兩版之間的區(qū)別還包括對(duì)數(shù)據(jù)存儲(chǔ)的支持、Django、JSON等工具庫(kù)的版本更新等等。
GAE的Python 2.7運(yùn)行時(shí)環(huán)境支持一下第三方工具庫(kù):
- lxml(2.3)——lxml工具庫(kù)支持開發(fā)者更加方便的處理XML和HTML文檔,對(duì)于GAE上Web服務(wù)的開發(fā)人員來(lái)說(shuō),是個(gè)必不可少的工具。
- jinja2(2.6)——Jinja2是基于python的多功能的被廣泛使用的模板引擎,功能比較類似于于PHP的Smarty、J2EE的Freemarker和Velocity。 它支持Unicode,并具有集成的沙箱執(zhí)行環(huán)境,Jinja2模板引擎彌補(bǔ)了Django自帶模板系統(tǒng)許多不足。Python 2.7不再推薦使用WebApp模板,jinja2成為了替代者。
- MarkupSafe(0.15)——MarkupSafe為XML、HTML和XHTML提供了安全轉(zhuǎn)義的字符串。
- NumPy(1.6.1)——Numpy提供了若干數(shù)據(jù)處理的工具。
- PIL(1.1.7)——全稱為Python Imaging Library,提供了許多用于處理圖片的函數(shù)。
- PyCrypto(2.3)——全稱為Python Cryptography Toolkit,提供了許多密碼學(xué)算法函數(shù),比如隨機(jī)數(shù)生成等。
- setuptools(0.6c11)——幫助開發(fā)者下載、構(gòu)建、安裝、升級(jí)和卸載Python包。
- WebOb(1.1.1)——對(duì)HTTP請(qǐng)求和響應(yīng)做了面向?qū)ο蟮姆庋b,GAE將其作為webapp框架的一部分。
- YAML(3.10)——支持可讀性高的消息序列化數(shù)據(jù)格式,GAE SDK使用YAML作為其配置文件的格式。
除了Python語(yǔ)言之外,GAE還支持Java和Go語(yǔ)言(實(shí)驗(yàn)階段):
Google App Engine 支持 Java 5 和 Java 6。在 App Engine 上運(yùn)行 Java 應(yīng)用程序時(shí),將使用 Java 6 虛擬機(jī) (JVM) 和標(biāo)準(zhǔn)庫(kù)運(yùn)行該應(yīng)用程序。理想情況下,開發(fā)者應(yīng)使用 Java 6 編譯和測(cè)試應(yīng)用程序,以確保本地服務(wù)器的工作方式與 App Engine 類似。
App Engine SDK 與 Java 5 兼容,這非常適用于不能方便獲取 Java 6 的開發(fā)人員(如使用 Mac OS X 的開發(fā)人員)。開發(fā)者可以將使用 Java 5 編譯的類和 JAR 上傳到 App Engine。
崔康 熱情的技術(shù)探索者,資深軟件工程師,InfoQ編輯,從事企業(yè)級(jí)Web應(yīng)用的相關(guān)工作,關(guān)注性能優(yōu)化、Web技術(shù)、瀏覽器等領(lǐng)域。