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