在Appengine上使用web.py

2 投票
4 回答
1047 浏览
提问于 2025-04-16 22:53

我在找一个简单的Python网页框架,既可以独立运行,也可以在Appengine上使用。

我想把应用写成可以根据部署配置在独立模式和Appengine之间切换的样子。独立模式会使用关系型数据库。

我查看了一下web.py,觉得它简单而且很有潜力。现在我有以下几个问题:

  • web.py在Appengine上运行得好吗?
  • 有没有什么主要的已知问题?
  • 你能分享一下在Appengine上使用web.py的经验吗?
  • 如果有任何建议来实现我上面提到的目标,我会很感激。

4 个回答

1

可以考虑使用 webapp2。它和 web.py 很像,提供的功能基本相同,而且可以直接在 App Engine 之外运行。此外,它和 App Engine 的 SDK 及库兼容性非常好(我在 这里解释得更清楚)。

你只需要添加一个关系型数据库的库。这很简单:SQLAlchemy 几乎是 Python 领域的标准,有很多文档和活跃的社区支持。

3

单靠任何一个网络应用框架是无法完成这个任务的,因为App Engine的环境包含的东西远不止一个数据库接口和CGI环境。即使有这样的框架,任何同时支持数据存储和关系数据库的数据库访问层(DAL)可能会在追求兼容性时牺牲掉两者的大部分灵活性。

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

4

web.py在Appengine上好用吗?

是的,web.py在这上面运行得很好,它小巧而且非常容易上手。

有没有什么主要的问题需要注意?

web.py没有提供与Google App Engine(GAE)兼容的数据抽象层;这意味着如果你想从关系型数据库(RDBMS)切换到NoSQL数据库,你需要自己在web.db数据库APIGoogle App Engine数据存储API之上创建一个层。

你能分享一下在Appengine上使用web.py的经验吗?

我在GAE上用web.py部署了几个简单的应用,还有一些小项目是用Sqlite作为数据库的;这里有个简短的评价。

如果有任何建议来实现上述目标,我会很感激。

如果你最关心的是从Appengine切换到关系型数据库,建议你看看web2py
虽然有一些限制,但据我所知,它是唯一一个对GAE友好的Python网页框架,提供了一个在App Engine数据存储和其他几个关系型数据库解决方案之上的数据抽象层。
从一个数据库切换到另一个数据库,只需要用正确的连接字符串初始化数据抽象层:

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

撰写回答