在Appengine上使用web.py

时间:2011-08-04 14:52:30

标签: python google-app-engine deployment web.py

我正在寻找一个简单的python web框架,它既可以独立运行,也可以在Appengine上运行。

我想以这样一种方式编写应用程序,即我可以根据部署配置在独立和Appengine之间切换。 Standalone将使用RDBMS。

当我检查web.py看起来简单而有前途。我有以下问题:

  • web.py在Appengine上运行良好吗?
  • 有任何重要的已知陷阱吗?
  • 您是否可以分享在Appengine上使用web.py的经验?
  • 对于实现上述目标的任何建议表示赞赏。

4 个答案:

答案 0 :(得分:4)

  

web.py在Appengine上运行良好吗?

是的它确实运作良好,它结构紧凑且易于使用。

  

是否有任何重要的已知问题?

Web.py不提供与GAE兼容的任何数据抽象层;这意味着,为了从RDBMS切换到NoSQL数据库,您必须自己创建web.db database APIGoogle App Engine datastore API之上的层。

  

您可以分享在Appengine上使用web.py的经验吗?

我已经在GAE和其他几个以Sqlite作为数据库的宠物项目上部署了几个简单的web.py应用程序; here小型评论。

  

对于实现上述目标的任何建议表示赞赏。

如果主要关注从Appengine到RDBMS的切换,请查看web2py
虽然使用some limitations,但据我所知,唯一一个允许在App Engine数据存储区和其他几个RDBMS解决方案之上提供DAL的Python Web框架GAE友好。 从一个db切换到另一个db只需要使用正确的连接字符串初始化DAL:

db = DAL('sqlite://storage.db')
db = DAL('mysql://username:password@localhost/test')
db = DAL('gae')

答案 1 :(得分:3)

没有任何webapp框架能够做到这一点 - App Engine环境不仅仅包括数据库接口和CGI环境。即使它可以,任何支持数据存储区和关系数据库的DAL都可能牺牲两者的大部分灵活性来追求它。

如果您想利用的不仅仅是数据存储,最好的选择是为App Engine编写应用程序,并使用AppScaleTyphoonAE在App Engine外部运行您的应用程序环境。

答案 2 :(得分:1)

考虑使用webapp2。它类似于web.py,提供基本相同的功能集,并在App Engine外部运行。此外,您可以获得与App Engine SDK和库的完美兼容性(我会更好地解释here)。

您只需要添加关系数据库库。但这是一个简单的选择:SQLAlqchemy几乎是Python领域的标准,拥有大量文档和繁荣的社区。

答案 3 :(得分:0)

我还建议web2py。优秀的框架,优秀的社区,在AppEngine之外开箱即用。它还支持许多数据库(SQLite,PostgreSQL,MySQL,MSSQL,FireBird,Oracle,IBM DB2,Informix,Ingres和Google App Engine)。

最重要的是,在Linux,Windows,Mac上安装它是微不足道的。