My favorites | 中文(简体) | Sign in

App Engine Python 概述

欢迎使用 Google App Engine for Python!通过 App Engine,您可以使用 Python 编程语言构建网络应用程序,并利用专业开发人员构建世界级网络应用程序所用的多种针对 Python 的库、工具和框架。您的 Python 应用程序将在 Google 的可扩展基础结构上运行,并使用大型持久性存储和服务。

如果您尚未做好准备,请参阅 Python 使用入门指南以获得关于使用 Python 和 Google App Engine 来开发网络应用程序的交互性介绍。

Python 运行时环境

Python 网络应用程序使用 CGI 协议与 App Engine 网络服务器交互。应用程序可以通过 CGI 适配器使用 WSGI 兼容的网络应用程序框架。App Engine 包含一个称为 webapp 的简单网络应用程序框架,使您易于上手。对于较大的应用程序,诸如 Django 的成熟第三方框架可很好地与 App Engine 配合使用。

App Engine 支持 Python 2.5。Python 解释器在一个安全的“沙盒”环境下运行,以便隔离针对服务和安全的应用程序。解释器可运行任何 Python 代码,包括您的应用程序中附带的 Python 模块以及 Python 标准库。解释器不能载入具有 C 代码的 Python 模块,它是一个“纯”Python 环境。

沙盒确保了应用程序仅执行不影响其他应用程序的性能和可伸缩性的操作。例如,应用程序不能将数据写入本地文件系统中,也不能建立任意网络连接。应用程序使用 App Engine 提供的可扩展服务来存储数据并通过互联网进行通信。当应用程序尝试从已知不受沙盒限制的标准库中导入模块时,Python 解释器引发异常。

有关详细信息,请参阅 CGI 环境

数据存储区和服务

应用程序可以使用 App Engine 数据存储区来实现可靠、可扩展的持久数据存储。针对 App Engine 数据存储区的 Python API 包括用于管理数据架构的丰富的数据建模工具。API 支持两种用于执行数据存储区查询的接口,包括也用于管理控制台的类似于 SQL 的查询语言 GQL。

App Engine Memcache 提供快速、暂时的分布式存储来缓存数据存储区查询和计算的结果。针对 App Engine Memcache 的 Python 接口与 Python Memcached API 兼容。

应用程序使用网址抓取服务来访问网络资源,并且使用 HTTP 和 HTTPS 协议来与其他主机通信。Python 应用程序可以使用来自 Python 标准库的 urlliburllib2httplib 模块访问此服务,或者可以使用 App Engine 网址抓取服务 API。

应用程序可以使用邮件服务,以应用程序管理员或当前登录用户的身份发送电子邮件。

应用程序通过图像服务能够转换并处理一些格式的图像数据,包括修剪、旋转、调整大小和照片色彩增强。

应用程序可以使用 Google 帐户进行用户验证。Google 帐户处理用户帐户的创建和登录,已拥有 Google 帐户(如 GMail 帐户)的用户可以将该帐户与应用程序结合使用。应用程序可以检测到当前用户的登录时间,并且可以访问该用户的电子邮件地址。Python API 可以在能直接存储在数据存储区中的对象中返回用户数据。

计划任务

应用程序可以配置将以指定间隔时间调用应用程序网址的计划任务。有关这一点的详细信息,请参阅 Cron Job

Python 工具

App Engine Python SDK 包括的工具可用于测试应用程序、上传应用程序文件、管理数据存储区索引、下载日志数据以及上传大量数据到数据存储区。

开发服务器在您的本地计算机上运行应用程序,以测试您的应用程序。服务器模拟 App Engine 数据存储区、服务和沙盒限制。开发服务器还可以根据应用程序在测试期间执行的查询生成数据存储区索引的配置。

称为 appcfg.py 的多用途工具可处理与 App Engine 上所运行的应用程序之间的所有命令行交互。appcfg.py 可将您的应用程序上传到 App Engine,或者只是更新数据存储区索引配置,这样您可以在更新代码之前构建新的索引。AppCfg 还可以下载应用程序的日志数据,这样您可以使用自己的工具来分析应用程序的性能。

Python SDK 包括了一个数据上传工具,可将数据从您的本地数据文件添加到应用程序的数据存储区。该工具可从 CSV 文件提取数据,CSV 是一种由大多数电子表格软件(如 Google 文档或 Microsoft Excel)所支持的电子表格格式。您可以使用 Python 代码来自定义如何将 CSV 文件转换为数据存储区实体。