阅读更多

16顶
1踩

非技术
首先声明的是我没有写过AppEngine的应用,我们只是在文档中探索,也许你能找到你感兴趣的东西。

任何把你限制在某台机器的时代将过去。AppEngine没有磁盘访问,没有线程,没有超级用户,没有系统命令调用,什么都没有,除了基于服务的访问。服务就是一切,因为可以通过装载平衡等幕后的一些手段来升级服务,而不需要程序的安装或者补丁等。

使用CGI接口并没有错,这个应用容器世界有着和CGI类似的特性:获得request,处理request,结束然后重复。CGI之所以被淘汰是因为每一次request都用启动新的进程,这样是非常慢而且很消耗资源的。使用AppEngine,你只需要写一个能够在这些速度非常快的平台上部署的应用。

AppEngine模式很抽象,但是却很实用。你的应用存在云系统中,并不和任何单个的机器或者群集中单个的机器相关。CPU就像一群忙碌的蜂群平行的运行着你的应用,巫师们则在可以扭曲现实的时光口袋中之中随意的指挥着这一切。这种抽象应用的实现是使用一种他们已经有实际经验并且非常熟悉的动态语言(Python)。这是非常好的方式,也是在预料之中的。

也许有人问了:LAMP(Linux,Apache,MySQL,PHP)已经过时了吗?答案当然不会是微软宣称的那样。其实AppEngine比EC2,S3,SQS和SDB更容易使用。在AWS中创建应用是一种专门的技术。这就是为什么我会把AppEngine和Heroku放在一起比较。Heroku用RoR而AppEngine使用Python。使用AppEngine很简单,基本上除了创建一个web应用之外基本不需要做别的。当然,如果没有服务器,你的web应用也没地方运行,这也就是Amazon(Simple DB)为什么大行其道的原因。但对用过PHP等LAMP开源软件的使用者来说,AppEngine也具有很大优势。

AppEngine简单的来说就是个基于请求和响应系统。你只需要写一个服务,然后在队列中等待获得一些CPU时间来运行自己的服务。打个比方,如果你想写一个服务程序来每隔一小时发送一次Email,那么你需要谁每隔一小时调用你的服务来发邮件?这个就是Google想做的。

下面就是关于App Engine的一些信息,虽然很多是从文档中直接引用的,但是仍不失为一种分享知识的方式...

  • Google App Engine的项目主页做得非常好。包括FAQ,文章,Blog,论坛,例程,教学和一个如何用DJango的文章。现在论坛上已经有很多先驱者的足迹了。
  • 支持Python是第一步,以后还会增加其他语言的支持。
  • 不需要获得管理员权限。程序是在沙箱(sandbox)中运行的,这种环境非常安全,对于特定的操作系统只提供受限的访问权限。这些限制允许App Engine 在多台服务器之间分发web请求,也可以因为网络阻塞关闭或者开启这些服务器。
  • 一个应用只能通过给定的URL或者email服务或者API来访问其它计算机,其他的计算机只能通过HTTP请求(或者HTTPS)的标准端口来访问这个应用。
  • 应用不能直接写文件系统。它可以读文件,但是只能读和这个应用一起传到App Engine上的那些文件。所有的应用必须使用App Engine自身的存储来保持持久数据。
  • 应用程序的代码只能是对web请求的响应,而且要求在短时间内返回响应数据。对于request的处理,是必须而且是只能给出一个response,而不能在响应后执行一些别的代码。
  • 数据存储不再像传统关系型数据库那样。数据对象或者实体都有一种或者一组属性。Query能够获得由属性值过滤和排序的一种给定的实体。属性值可以使任何支持的属性值类型。
  • 数据库使用乐观锁来进行同步控制。在一个事务中,如果要和另外一个进程同步更新一个实体,那么在这次事务中对于实体的更新次数总是相同的。
  • 对于事务的处理:数据存储在分布网络中使用"实体组"(entity groups)来实现事务。一个事物操作单个组中的实体。在你的应用中,可以在实体创建完成后把它分配给某个组。
  • 邮件服务:App Engine提供一套邮件系统为你的应用服务。
  • 目前有500M容量的,5百万的月浏览次数和10G/日的带宽是免费的。意思是如果你需要额外的,那么就不是免费的了。
  • 开发者可以使用Windows,Max OS或者Linux SDK。Python 2.5是必需的。
  • SDK中包含了一个模拟App Engine的服务器程序。
  • Google Api Engine支持任何由纯Python写的框架(或者任何使用CGI适配器,支持WSGI的框架),包括Django,CherryPy,Pylon和web.py。如果你需要以上某种框架来支持你的应用,只需要把代码拷贝到应用所在目录就可以了。
  • Google有它自己的框架,名为"webapp"。很有微软风格的命名方式。

下面是一个"hello world"的例子:


import wsgiref.handlers

from google.appengine.ext import webapp

class MainPage(webapp.RequestHandler):
  def get(self):
    self.response.headers['Content-Type'] = 'text/plain'
    self.response.out.write('Hello, webapp World!')

def main():
  application = webapp.WSGIApplication(
                                       [('/', MainPage)],
                                       debug=True)
  wsgiref.handlers.CGIHandler().run(application)

if __name__ == "__main__":
  main()


这段代码定义了一个request handler,MainPage,映射到根目录(/).当webapp接收到一个HTTP GET request后,它生成一个MainPage类,并调用实例的get方法。在这个方法中,可以用self.request得到关于request的信息。这个方法通过在self.response中设置了它自己的属性来处理response,然后退出。webapp了发送一个基于MainPage实例最终状态的response。

16
1
评论 共 2 条 请登录后发表评论
2 楼 linshilai 2009-01-30 16:23

欢迎访问http://quick-proxy.appspot.com

这是基于Google Appengine开发的在线代理网站。
1 楼 right 2008-08-03 15:44
欢迎访问 right.appspot.com, 地图标注的冬冬

使用 google webapp framework, 没用django,

好多问题,
如何使用自定义User模块,
如何处理session,
数据库操作限制,特别的transaction内的对象必须在一个group里面,以前没有类似设计经验
blabla............
数据量上去了〉500M 如何?

en, 这论坛讨论python的不多

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Perl5语言命令详解.pdf

    Perl5语言命令详解.pdfPerl5语言命令详解.pdfPerl5语言命令详解.pdf

  • Perl学习

    http://www.sun126.com/perl5/perl5-1.htm翻译:flamephoenix第一章 概述一、Perl是什么?二、Perl在哪里?三、运行四、注释一、Perl是什么?  Perl是Practical Extraction and Report Language的缩写,它是由Larry Wall设计的,并由他不断更新和维护,用于在UNIX环境下编程。.P...

  • Perl5 语言精粹

    2019独角兽企业重金招聘Python工程师标准>>> ...

  • Perl 5 开源项目教程

    Perl 5 开源项目教程 perl5 ???? The Perl programming language 项目地址: https://gitcode.com/gh_mirrors/pe/perl5 ...

  • Linux下安装Perl 5

      在安装openssl时需要安装Perl5,否则报一下错误。 Operating system: x86_64-whatever-linux2 You need Perl 5. 安装Perl 5的执行步骤为: ####需要安装 perl-5https://www.cpan.org/src/README.html wget https://www.cpan.org/src/5.0/p...

  • Perl 5 教程

    http://www.cbi.pku.edu.cn/chinese/documents/perl/index.htm

  • Perl 教学 Perl5中的引用(指针)

      一、引用简介    引用就是指针,可以指向变量、数组、哈希表(也叫关联数组)甚至子程序。Pascal或C程序员应该对引用(即指针)的概念很熟悉,引用就是某值的地址,对其的使用则取决于程序员和语言的规定。在Perl中,可以把引用称为指针,二者是通用的,无差别的。引用在创建复杂数据方面十分有用。    Perl5中的两种引用类型为硬引用和符号引用。符号引用含有变量的名字,它对运行时创建变量名并定...

  • Perl教学 第十四篇 Perl5的包和模块

    一、require函数用require函数可以把程序分割成多个文件并创建函数库。例如,在myfile.pl中有定义好的Perl函数,可用语句require ("myfile.pl"); 在程序中包含进来。当Perl解释器看到这一语句,就在内置数组变量@INC指定的目录中寻找文件myfile.pl。如果找到了,该文件中的语句就被执行,否则程序终止并输出错误信息:Cant find myfile.p

  • Perl 语言入门学习

    Perl 由 Larry Wall 在 1987 年创建,最初设计用于 Unix 系统的文本处理。Perl 的名称来源于 “Practical Extraction and Report Language”(实用提取和报告语言)。

  • Perl 5 开源项目常见问题解决方案

    Perl 5 开源项目常见问题解决方案 perl5 ???? The Perl programming language 项目地址: https://gitcode.com/gh_mirrors/pe/perl5 ...

  • 推荐一款高效Perl开发利器:Perl5-IDEA

    推荐一款高效Perl开发利器:Perl5-IDEA 去发现同类优质开源项目:https://gitcode.com/ 在编程世界里,选择一款合适的集成开发环境(IDE)对于提升效率至关重要。今天,我要向大家推荐的是专为Perl语言打造的一款强大IDE——,它基于IntelliJ IDEA平台,为Perl开发者提供了丰富且强大的功能。 项目简介 Perl5-IDEA是由Camelcade团队开发的一...

  • Perl5和Perl6对比使用Sigils的差别

    这,这个,那,那个@perl 6中的sigil表示一个类型约束:如果您想用该sigil将某个东西绑定到lexpad条目中,则它必执行位置角色。这基本上是创建匿名词法实体(标量、数组和哈希),使用正常语义初始化它们,然后绑定生成的对象(标量集装箱列阵对象,以及散列对象)的名称,您可以将其用作Perl 6中的任何其他普通变量。@, %,和&在Perl 6中,不要创建任何特定的对象,而是指示一个类型约束,该约束将应用于名称绑定到的对象。在Perl 6中,$还指出,其中的任何内容都应被视为单一的项目。

  • perl 5基础教程——运算符

    一、算术运算符 :+(加)、-(减)、*(乘)、/(除)、**(乘幂)、%(取余)、-(单目负)   (1)乘幂的基数不能为负,如 (-5) ** 2.5 # error;   (2)乘幂结果不能超出计算机表示的限制,如10 ** 999999 # error   (3)取余的操作数如不是整数,四舍五入成整数后运算;运算符右侧不能为零   (4)单目负可用于变量: - $y ; # 等效于

  • perl语言入门学习

    Perl是一种高级、通用的、解释型的编程语言,它以其强大的文本处理能力而闻名。Perl 5是Perl语言的当前版本,广泛用于系统管理、网络编程、图形编程和许多其他领域。以下是一些入门学习Perl语言的建议步骤:这里是一个简单的Perl脚本示例,它打印出"Hello, World!": 要运行这个脚本,你需要将其保存为一个文件,例如,然后在命令行中运行。记住,实践是学习编程语言的关键。尝试编写代码,解决问题,并从错误中学习。随着时间的推移,你将变得更加熟练。Perl的语法简洁而灵活,以下是一个简单的Perl脚

  • 源码编译perl5遇到的问题汇总

    源码编译perl5遇到的问题汇总

  • PERL5中文教程详解

    Perl是Practical Extraction and Report Language的缩写,它是由Larry Wall设计的,并由他不断更新和维护,用于在UNIX环境下编程。

  • perl 5.16 for windows

    强大的PERL程序,windows 64 bit,可以有效的帮助大家对perl的练习和学习,

  • perl-5.24-win64.rar

    搭建Qt+mqtt环境使用到的perl下载

  • perl 正则表达式 引擎_Perl 5引擎概述

    perl 正则表达式 引擎 正如我在“ 我的DeLorean运行Perl ”中所述,切换到Perl极大地提高了我的开发速度和可能性。 在这里,我将更深入地研究Perl 5的设计,以讨论对系统编程很重要的方面。 编程与开发 红帽开发者博客 编写备忘单 免费试用:Red Hat Learning订阅 新的Python内容 我们最新JavaScript文章 几年前,...

Global site tag (gtag.js) - Google Analytics