6

有没有人有任何直接使用 Jython 和 Google App Engine 的经验(好或坏)?

4

2 回答 2

4

要问一个显而易见的问题:你为什么要这样做?(C)Python 由 Google App Engine 原生支持,现在已经相当成熟并且得到很好的支持。

不过,要回答最初的问题:我没有个人经验,但我可以给你一个大概的概述:

当前最简单的方法是使用 Jython 对调用 Java 的支持来使用 App Engine Java SDK。这意味着尽管您将编写 Python,但它看起来很像 Java,并且您必须使用 Java 文档,而不是 Python 文档。

但是,理论上可以在 App Engine 上的 Jython 中使用 Python SDK。SDK 是纯 Python,SDK 和运行时之间的所有交互都是通过 RPC 通过 google.appengine.api.apiproxy_stub_map 模块完成的。Java 在 com.google.apphosting.api.ApiProxy 类中有一个等效的接口 -有关如何配置它的一些详细信息,请参阅有关GAE 中的单元测试的文章。

鉴于所有这些,以下是在 Jython 中使用 Python API 的方法:

  1. 编写一个 Python apiproxy_stub,它只接受所有 API 调用并将它们发送到 com.google.apphosting.api.ApiProxy 类。
  2. 将 Python SDK 的相关部分与您的 Jython 应用程序捆绑在一起(不幸的是,这是大部分内容)。
  3. 在您的初始化代码中,安装您编写的 apiproxy_stub 子类作为所有相关服务(datastore_v3、memcache、user、urlfetch 和图像)的处理程序。

如果您最终这样做了,请将其记录下来并发布代码 - 我知道至少还有一位其他用户会感兴趣。:)

于 2009-05-02T14:03:14.820 回答
2

首先,有人声称Jython、Querces 和 JRuby 可以利用 JVM 的力量在速度方面击败他们的本地对手。

但是,关于 Jython 的速度存在一些相互矛盾的信息。一位 Stack Overflow 用户声称Jython 是他进行的速度测试所涉及的许多语言中最慢的

这两个性能问题都没有真正涉及 App Engine,通常只涉及 JVM。

这篇由 Jython 提交者发布的文章中,Alan Kennedy 声称 App Engine 上的 Jython 将 Python 的快速开发特性与 JVM 中可用的丰富库相结合。Jython 是 Python,但它是可以直接访问 Java 类的 Python。

我对 Querces PHP 有一些经验。我将 JQuery Form Builder 插件移植到 Google App Engine。它是 PHP 代码,但 PHP 能够直接访问用 Java 编写的 DAO 对象。同样,Jython 也能做到这一点。

Alan Kennedy 还遇到了Nick Johnson 提出的挑战,他在该挑战中展示了可以在 App Engine 上使用 Jython 完成的事情,否则这些事情在纯 Python、XSLT 转换中很难完成。他回答了尼克回答中的划线问题:你为什么要这样做?

于 2011-01-30T04:40:57.077 回答