0

我有一些 Python 服务,并在 app.yaml 中为它们定义了处理程序位置

我也有 Java 服务,并且我已经配置了 web.xml。

我希望他们都在同一个APP ID下,例如

那么我怎样才能做到这一点呢?

  • 当我使用GAE Java Eclipse 插件时,它只上传 Java 服务并删除现有的 Python 服务。
  • 当我使用appcfg.py 更新时,它只上传 Python 服务并删除现有的 Java 服务。
4

4 回答 4

4

有一个hack:上传到不同的版本

您可以在 Java 中使用一个实例版本,而在 Python 中使用另一个实例版本。默认的将通过 对公众可见http://myapp.appspot.com

http://version.myapp.appspot.com您可以通过例如访问其他版本(在浏览器中或以编程方式)http://3.myapp.appspot.com

如果您想通过相同的 URL 访问它们,那么您将需要代理请求或进行重定向(如果您的客户端允许)。

于 2012-01-19T08:46:59.977 回答
1

没有官方方法可以通过一个应用程序使用两个运行时环境。Jython 是在 Java 运行时环境中运行 Python 代码的一种方式。

根据您的需要,您可以尝试使用具有相同应用 ID 的两个不同应用版本。一个版本可以使用Java运行环境,另一个可以使用Python运行环境。两个版本都会看到相同的数据存储。您可以使用 appspot.com URL 分别处理每个应用程序版本,尽管它们并不漂亮:http: //version-id.latest.app-id.appspot.com 只有一个版本可以是“默认”版本(http: //myapp.appspot.com)。这使用了 10 个允许版本中的 2 个,并且您必须小心使用正确的版本 ID 部署每个版本。所以这不是一个理想的解决方案。

于 2012-01-19T08:48:37.710 回答
0

我确信您只能同时拥有一个应用程序,因为每种类型的应用程序服务器/虚拟机都不同。我的意思是你不能上传不同的部分,不能在同一个应用程序上为不同的 url 有不同的 sdk,等等。

顺便说一句,您可以尝试使用jython,它可以在 Java 项目中解释您的 Pythong 代码。我不确定它是否已准备好生产(几年前我尝试过时有很多问题),但也许它对您的情况有帮助

于 2012-01-19T05:43:42.897 回答
0

正如@splix 所说,将两个不同语言的应用程序部署到同一个appid 中似乎是不可能的。那么如何解决方法呢?在您的 Java 应用程序上设置一个 /pythonapp servlet,它将所有请求通过 URLFetch 重定向到 mypythonapp.appspot.com。

我想到的这种解决方法的缺点是您丢失了用户 API 提供的有关登录用户的信息,因此您需要在重定向请求中附加信息。根据您的应用程序的场景,我不知道这是否会成为一个节目停止者。

编辑:我想到的是彼得的建议,使用不同的版本而不是将它们部署为完全不同的应用程序,很抱歉我把它们弄混了。部署到不同的应用程序意味着您的 Python 应用程序和 Java 应用程序无法使用共享数据存储。

我的回答的不同之处在于您可以使用 URLFetches 在不同版本的应用程序之间转发请求。但是按照彼得的建议在客户端执行重定向,而不是像我的回答那样在服务器端执行重定向可能会不那么棘手。

于 2012-01-19T06:48:21.977 回答