在App Engine上运行Django App有多大的痛苦?另外,Datastore是否像Django一样工作?Google App Engine上的Django
回答
我花了一些时间,试图回答同样的问题......在我看来,最困难转移到GAE的事情是Django的模型 ...在这个意义上,他们需要进行各种修改和反思,主要是因为GAE的后端不是标准的关系数据库,而是谷歌的BigTable。我发现了一个很好的介绍这个位置:
http://www.youtube.com/watch?v=rRCx9e38yr8
不管怎么说,这是值得下载这些“补丁”之一,并与它去!
对我来说,最好的解决方案是'应用程序引擎修补程序'。我下载了示例项目,并立即开始工作! (请注意,您需要单独安装GAE的SDK)对我来说,杀手特性是这样的事实:django-admin和许多其他经典的django功能也已被移植!
http://code.google.com/p/app-engine-patch/
的documentation仍然在我看来相当小的,但它足以让你去。它会帮助你浏览官方的GAE文档!
App Engine包括Django开箱即用的0.96版本,但它非常残缺。
App Engine Helper和app-engine-patch据说可以在一定程度上解决这个问题,但我还没有尝试过自己。
http://code.google.com/appengine/articles/appengine_helper_for_django.html http://code.google.com/appengine/articles/app-engine-patch.html
疼痛的程度取决于您希望重复使用多少现有代码。不幸的是,由于Datastore不支持SQL,你通常不能只使用任何可插入Django的应用程序并将其用于GAE项目。
应用引擎补丁http://code.google.com/p/app-engine-patch/看起来比其他django助手在将标准应用程序(网站,ContentTypes,Flatpages)带到GAE时领先一步。我已经在几个gae项目上使用了app-engine-patch,一旦你理解了如何将django-sql模型移植到django-gae模型并将sql转换为数据存储查询,事情可以很快完成 - 但总会有一个学习曲线。
appengine-helper试图通过提供模型来弥合数据存储间隙,因此您不必更改模型超类,但是我发现最终必须更改ManyToMany关系和任何SQL,所以优势最终是最小的。 ae-patch有一个尝试提供ae-datastore后端的路线图,但它可能不会发生一段时间。
只需Yesterday (depending on your time zone), Google released a new SDK用于Appengine上的Python,支持django 1.0开箱即用。
31.01.2012,Google released App Engine 1.6.2支持Django开箱即用。
您需要使用django-nonrel(source)。
你仍然会发现问题负载:不支持
- Many2Many关系
- 虚假连接的查询
- App Engine不容许与插座或C依赖任何蟒蛇LIB的增加数(哨兵,lxml ...)
您可以尝试尽早访问CloudSQL。
否则你不约束使用App Engine,您可以考虑使用:
更便宜,更灵活地支持要求的文件,如画中画。
谷歌已经推出了他们的云SQL存储。这实际上是云5.5中的MySQL 5.5。 IMO是将Django应用程序迁移到云中的一种非常好的方式。他们有一个免费试用到2013年6月1日。
如果您需要一些提示如何设置您的Django项目Appengine和云SQL我写了tutorial for that。
- 1. Google App Engine上的Django + Adsense
- 2. Google App Engine或Django?
- 3. Google App Engine上的Django的FileField(或ImageField)
- 4. Django FileField,Google App Engine上的ImageField
- 5. Django-nonrel≤1.3和Google App Engine上的Memcache
- 6. 在Google App Engine上使用烧杯(Django)
- 7. 在Google App Engine上使用Django框架
- 8. 在Google App Engine上部署Django项目
- 9. 在Google App Engine上为DataStore设置Django
- 10. 在Google App Engine API上创建Django-nonrel
- 11. Google App Engine,Django,CloudSQL和Images
- 12. Google App Engine和django-nonrel
- 13. Google App Engine与Django 1.0.2
- 14. Django替换Google App Engine(Python)
- 15. Facebook,Django和Google App Engine
- 16. Google App Engine和Django支持
- 17. Google App域上的Google App Engine
- 18. Google App Engine + Google Cloud Storage + Sqlite3 + Django/Python
- 19. Django/Django nonrel + Google App Engine +教程
- 20. Windows上的Google App Engine SDK?
- 21. Google App Engine上的PeeWee + SQLite3
- 22. Google App Engine上的PHP
- 23. Google App Engine上的UncaughtExceptionHandler Java
- 24. Google App Engine上的JDO UnsupportedDatastoreFeatureException
- 25. Google App Engine上的ServletContext
- 26. Google App Engine上的NoClassDefFoundError
- 27. Google App Engine上的Retrolambda
- 28. Google App Engine上的Lua
- 29. Google App Engine上的web.py
- 30. Google App Engine上的Imaplib Python
我发现应用程序引擎修补程序是PIA。它总是寻找一些奇怪的python模块,通常会返回更奇怪的错误,并且功能与django runserver完全不同。 – drozzy 2009-12-02 13:59:40
这个补丁是否更好,Django-Nonrel? – 2011-02-27 20:16:45
注意:应用程序引擎修补程序已过时并已被放弃。不要使用它。 – dfrankow 2012-08-12 19:10:05