来源: InfoQ
最近,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 提供了更多的特性和工具库,开发者可以更加得心应手:
1、多线程——2.5不支持此特性,在2.7中,开发者可以利用多线程库。单个请求中的所有线程必须在请求时限(在线请求为 60 秒,离线请求为 10 分钟)之前完成。
2、并发请求——2.5不支持此特性,现在开发者可以在 GAE 中修改配置来支持并发请求。
3、字节码修改——在2.5版本中由于运行时的限制无法修改字节码,Python 2.7 不再包括此限制。生成和处理字节码的工具库可以在运行时正常工作。
4、字节码上传——2.5版不支持,Python 2.7 可以上传 .pyc 文件,但是不能和 .py 一起,但是可以上传包含 .py 和 .pyc 文件的 .zip 文件。
除此之外,两版之间的区别还包括对数据存储的支持、Django、JSON 等工具库的版本更新等等。
GAE 的 Python 2.7 运行时环境支持一下第三方工具库:
1、lxml (2.3)——lxml 工具库支持开发者更加方便的处理 XML 和 HTML 文档,对于 GAE 上 Web 服务的开发人员来说,是个必不可少的工具。
2、jinja2(2.6)——Jinja2是 基于 python 的多功能的被广泛使用的模板引擎,功能比较类似于于 PHP 的 Smarty、J2EE 的 Freemarker 和 Velocity。 它支持 Unicode,并具有集成的沙箱执行环境,Jinja2模板引擎弥补了 Django 自带模板系统许多不足。Python 2.7 不再推荐使用 WebApp 模板,jinja2成为了替代者。
3、MarkupSafe (0.15)——MarkupSafe 为 XML、HTML 和 XHTML 提供了安全转义的字符串。
4、NumPy (1. 6.1)——Numpy 提供了若干数据处理的工具。
5、PIL (1.1.7)——全称为 Python Imaging Library,提供了许多用于处理图片的函数。
6、PyCrypto (2.3)——全称为 Python Cryptography Toolkit,提供了许多密码学算法函数,比如随机数生成等。
7、setuptools (0.6c11)——帮助开发者下载、构建、安装、升级和卸载 Python 包。
8、WebOb (1.1.1)——对 HTTP 请求和响应做了面向对象的封装,GAE 将其作为 webapp 框架的一部分。
9、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。