【问题标题】:GAE multi-module, multi-language application on localhost本地主机上的 GAE 多模块、多语言应用程序
【发布时间】:2014-09-09 13:51:23
【问题描述】:

我有一个结构如下的多模块 GAE 应用程序:

  • 一个 Python27 模块,它是一个常规的 Web 应用程序。此 Python 应用程序使用 Datastore API。常规、无聊的网络应用。
  • 一个 Java 模块(另一个 Web 应用程序),它挂钩 Datastore 调用(由 Python Web 应用程序进行的调用),并显示有关记录的 Datastore 调用的聚合数据。

我已经能够在 GAE 云上部署这个应用程序,一切正常。

但是,当我想在 localhost 上运行我的应用程序时会出现问题。

Python 模块必须使用 Python SDK 启动。 Java 模块必须使用 Java SDK 启动。 但是,这 2 个 SDK 似乎不共享相同的数据存储(我相信 2 个 SDK 写入/读取磁盘上的单独文件)。

在我看来,这 2 个 SDK 在开发控制台实现的推进方面也有所不同。 与 Java SDK 相比,Python SDK 具有更干净、更“新近”的开发控制台(类似于新的 console.developers.google.com 控制台),Java SDK 具有旧版本的开发控制台(类似于旧的apppot.com 控制台)

所以我的问题是,有没有办法启动共享相同数据存储文件的 2 个以上模块(使用不同的语言:Python、Java)?这很好,因为它允许 Java 模块挂钩 Python 数据存储调用,目前这似乎是不可能的。

【问题讨论】:

  • 好问题。您是否尝试过在 Java 运行配置中指定 local_db.bin 的路径?您可以在 VM args -Dappengine.generated.dir=<path_to_directory_containing_local_db> 中提供以下内容。我会先做一个备份,以防 Python SDK 破坏它,但有兴趣听到结果,因为我们很快需要做同样的事情。

标签: java python google-app-engine module google-cloud-datastore


【解决方案1】:

您也许可以通过使用“appscale”(一个可以帮助您的开源项目,如果您设置 Virtual Box 并在其上加载图像)来做类似的事情。查看 community.appscale.com

另一种方法(请注意,这很棘手)是:

1- 在 localhost:9000 上将您的 python 部署为独立项目

2- 在 localhost:8000 上将您的 java 部署为独立项目

3- 更改您的 python 和 java 代码,以便当它们在 Dev 中时,它们会访问正确的本地主机(java 点击 localhost:9000 和 python 点击​​ localhost:8000)

4- 尝试像 @tx802 建议的那样指定 local_db 的路径。

我不确定这两种方法是否有效,但我认为它们至少都值得一试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 2012-07-04
    • 2012-03-21
    • 1970-01-01
    • 2015-12-14
    相关资源
    最近更新 更多