首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在本地运行Java和Python标准

在本地运行Java和Python标准
EN

Stack Overflow用户
提问于 2018-02-16 21:31:45
回答 2查看 217关注 0票数 3

我的项目使用Python标准已经有一段时间了,我们已经能够使用dev_appserver.py在本地运行这些服务。

最近,我们也开始在Java 8上开发服务。新服务是用应用程序gradle -plugin构建的,可以使用gradle任务appengineRun在开发服务器上运行。但是,这些服务需要相互交互,所以我正在寻找一种方法来并行运行它们,特别是在同一个dev_appserver进程上。

我尝试过的:

运行dev_appserver.py并将其指向Python和Java的配置文件。这几乎是可行的: dev_appserver不报告任何错误,它在端口8080和8081启动Python应用程序。然后,它在一个随机端口启动第二个Jetty服务器:

代码语言:javascript
复制
$ dev_appserver.py public-api/src/main/appengine/app.yaml api/api.yaml
INFO     2018-02-16 21:23:05,712 devappserver2.py:105] Skipping SDK update check.
INFO     2018-02-16 21:23:05,758 api_server.py:308] Starting API server at: http://localhost:58551
INFO     2018-02-16 21:23:05,764 dispatcher.py:255] Starting module "public-api" running at: http://localhost:8080
WARNING  2018-02-16 21:23:05,764 dispatcher.py:316] Your python27 micro version is below 2.7.12, our current production version.
INFO     2018-02-16 21:23:05,775 dispatcher.py:255] Starting module "api" running at: http://localhost:8081
INFO     2018-02-16 21:23:05,781 admin_server.py:146] Starting admin server at: http://localhost:8000
WARNING  2018-02-16 21:23:05,781 devappserver2.py:176] No default module found. Ignoring.
Feb 16, 2018 9:23:07 PM com.google.appengine.tools.development.AbstractContainerService configure
WARNING: Null value for containerConfigProperties.get(devappserver.portMappingProvider)
2018-02-16 21:23:07.343:INFO::main: Logging initialized @521ms
2018-02-16 21:23:07.553:INFO:oejs.Server:main: jetty-9.3.18.v20170406
2018-02-16 21:23:07.667:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=0ms
2018-02-16 21:23:07.865:INFO:oejsh.ContextHandler:main: Started c.g.a.t.d.j.DevAppEngineWebAppContext@5fbe4146{/,file:///Users/gmiller/workspace/skynet/public-api/src/main/appengine/,AVAILABLE}{/Users/gmiller/workspace/skynet/public-api/src/main/appengine}
2018-02-16 21:23:07.878:INFO:oejs.AbstractConnector:main: Started NetworkTrafficSelectChannelConnector@45b4c3a9{HTTP/1.1,[http/1.1]}{localhost:58560}
2018-02-16 21:23:07.888:INFO:oejs.Server:main: Started @1065ms
Feb 16, 2018 9:23:07 PM com.google.appengine.tools.development.AbstractModule startup
INFO: Module instance public-api is running at http://localhost:58560/
Feb 16, 2018 9:23:07 PM com.google.appengine.tools.development.AbstractModule startup
INFO: The admin console is running at http://localhost:58560/_ah/admin
Feb 16, 2018 9:23:07 PM com.google.appengine.tools.development.devappserver2.DevAppServer2Impl doStart
INFO: Dev App Server is now running

现在服务已经启动,我希望能够联系任何一个。Python服务与我预期的一样,但是使用Java服务的任何一个端口只会从Jetty返回404:

代码语言:javascript
复制
Feb 16, 2018 9:30:01 PM com.google.appengine.tools.development.jetty9.LocalResourceFileServlet doGet
WARNING: No file found for: /public-api/docs/view
INFO     2018-02-16 21:30:01,667 module.py:833] public-api: "GET /public-api/docs/view HTTP/1.1" 404 83

本地和并发支持/可能运行Python和Java服务吗?我错过了什么配置吗?

编辑:我尝试使用dev_appserver.py运行应用程序,比如:dev_appserver.py public-api/build/exploded-public-api/,然后我能够访问服务中的静态文件,但是没有使用Spring配置的路径。似乎SpringBootServletInitializer没有被调用。是否需要添加web.xml或其他配置才能正确加载服务器?

EN

回答 2

Stack Overflow用户

发布于 2018-02-16 23:11:25

我相信你应该能够在本地运行

尝试访问localhost:8000的管理服务器,并单击其中每个服务的链接?

服务器

另外,您是否使用可以拦截请求的dispatch.yamlhttps://cloud.google.com/appengine/docs/standard/python/config/dispatchref

如果没有dispatch.yaml,通常必须在url中指定服务(尽管我认为这不适用于本地的dev-server):

ID.appspot.com

url

票数 0
EN

Stack Overflow用户

发布于 2018-02-22 18:05:11

问题是,Java模块应该使用不同的本地服务器可执行文件(具有不同的调用args),请参阅Python 使用本地开发服务器本地开发服务器选项 vs 使用Java本地开发服务器

您试图为Java应用程序使用Python,这很可能解释了为什么它只部分工作(它可能能够理解一些信任,但不是全部)。

我对Java端还不太熟悉,不能说它是否可行,但我首先尝试通过单独运行Java服务,并使其正常工作。

然后,我尝试将它们与处理python服务的python服务器并行运行,重点是解决直接的端口冲突等等。

另一种可能的调查途径(可能是先尝试?)将深入研究实际从<gcloud_sdk>/bin目录中调用的包装器的内部,并查看它们在幕后执行的结果是否可以在两种语言之间进行协调,以便单个核心进程同时为这两个环境服务。

如果单个核心无法实现--恐怕您无法同时正确地执行所有服务--单独的核心意味着不同的服务可能看不到一个一致的GAE应用程序"sandbox“(例如,每个核心都有自己的版本/副本的数据存储/memcache数据),这违背了这个目的。

理想情况下,Google应该在SDK(s)中提供一种混合使用任何受支持的语言编写的任何组合标准和/或灵活的环境服务的方法--以其他方式适当地模拟真正的GAE下面支持的内容。没有它,就没有合适的方法在本地开发/测试这样的混合应用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48835150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档