当前位置: 首页 > 面试题库 >

将不同的语言服务部署到同一应用程序[Google App Engine]

壤驷经国
2023-03-14
问题内容

我有两个应用程序,一个在Python中,另一个在Java中。

在Python中,我的应用程序位于中设置的Service下,该服务app.yamlcron.yaml调用该服务。

在我的(Maven)Java应用程序中,它不在服务下,因此它是默认服务(如有需要,我将对其进行更改)。该应用程序也被称为。./WEB- INF/cron.xml文件以及有关该应用程序的信息../WEB-INF/appengine-web.xml

目前他们之间没有任何联系,我将两个应用程序都部署到了不同的项目中。

我想将它们融合在一起,并将它们放在与以下项目相同的项目中:

python-app.project.appspot.com

java-app.project.appspot.com

而不是当前

python-app.project1.appspot.com

project2.appspot.com

我没有尝试使用app.yaml和appengine-web.xml文件,因为我不知道这些文件是否要修改。

如何使用不同的语言(Python和Java)制作不同的服务(模块)


问题答案:

appspot.com由于url路由规则,结果应用程序的命名与您提到的命名略有不同。从通过URL路由:

请求发送到命名服务默认版本的可用实例

https://service-dot-app-id.appspot.com
http://service.my-custom-domain.com

因此,假设您的服务已命名pythonjava而您的应用程序已命名,app则您的appspot.comURL为:

python-dot-app.appspot.com
java-dot-app.appspot.com

但是您可以根据需要使用自定义域将它们映射。

至于构建这样的应用程序:

  • 请记住,其中一项服务 需要 我命名default(或保持未命名)

  • 为每个服务创建应用子目录(以下是在文档中不再找到但在Google App Engine应用程序中的默认服务/模块可以作为非同类产品的同级产品中找到的曾经被推荐的多服务应用程序结构图)默认的文件夹结构之一?)

  • 将每个服务代码的全部内容复制到相应的子目录中

  • 识别应用程序级配置文件(cron.yamldispatch.yamlqueue.yamlindex.yaml在应用级目录或它们的Java等价物),你必须和移动它们的上一级,(你可能需要合并他们,如果这样的配置文件存在于两个服务)。您可能需要为这些文件选择一种语言,我会选择python。Cron作业需要配置目标(请参阅Cron作业定义中的target行)。

请记住,部署一个/所有模块 可能 不一定像您习惯的那样更新这些文件,而是可能需要显式部署它们-
请查看相应的服务配置文档。在部署服务时,您应格外注意可能会覆盖这些配置,您可能需要提出特定的部署顺序。

  • 添加dispatch.yaml文件并重新访问/调整服务的请求路径名称空间,以确保将每个请求正确地定向到各自的服务,可能是一个好主意(可能是强制性的)。cron作业特别注意,从Cron作业定义的 target行开始:

如果使用调度文件,则可能会重新路由您的作业。例如,给定以下
cron.yaml*dispatch.yaml 文件,即使作业的目标是 module1 ,该作业也将在
module2中 运行:
*

# cron.yaml
cron:
- description: "test dispatch vs target"
  url: /tasks/hello_module2
  schedule: every 1 mins
  target: module1

# dispatch.yaml:
dispatch:
- url: '*/tasks/hello_module2'
  module: module2

https://cloud.google.com/appengine/docs/python/config/cronref#cron_job_definitions



 类似资料:
  • 我正在尝试部署一个示例。war文件到运行Windows/Tomcat 9的Azure应用程序服务。我正在将文件上载到wwwroot/webapps文件夹。文件正在解包,但未创建名为sample的子文件夹。我已经启用了日志记录功能,但是里面没有任何有用的东西。有什么想法吗? 我试图使用的示例war文件来自apache tomcat页面。https://tomcat.apache.org/tomcat

  • pom.xml我有这个用来部署 在设置中。tomcat服务器的xml我有这个 当我试图调用maven deploy时,出现了一个错误: 服务器正在运行。我试图在pom中更改tomcat插件。xml到tomcat7 maven插件,但我得到了相同的错误。据我所知,它正试图将war文件部署到http://localhost:8080/manager/ua/andrfas/SCPI/0.0.1/SCPI

  • 我刚到spring和安古拉尔群岛。我按照这里的步骤构建后端restful API,它根据请求发送Json。因此,根据指南,当我运行“mvn spring-boot:run”时,tomcat服务器将在localhost:8080启动。 然后我用Yeoman角生成器来构建我的角应用程序。当我在我的angular应用程序中运行“Grunt Serve”时,前端应用程序运行在localhost:9000。

  • 我试图将一个spring boot应用程序部署到EAP7服务器上。该应用程序作为使用spring Boot的嵌入式tomcat servlet的独立应用程序运行良好,但是当我试图将其作为WAR部署到EAP7时,我遇到了以下异常: 在将jar文件转换为WAR时,我已经按照spring-boot文档的建议进行了操作。 我删除了并用覆盖受保护的SpringApplicationBuilder配置(Spr

  • 我正在开发一个小项目,我有Springbootjava应用程序和Anagular 5应用程序。我想把它们部署在一个tomcat上。在不同的端口上运行每个。 应用程序流应该是这样的:1)一些外部服务使用一些头调用Java应用程序。Springboot java应用程序应该读取标题并将其放入cookie中,然后将请求转发给Angular应用程序。2) Angular应用程序从cookie中读取头,并通

  • 我期待着在tomcat 7前面的apache超文本传输协议服务器,以呈现我的静态内容,以获得更好的性能和可扩展性。 现在使用pom,我能够部署到tomcat完全战争。 但我找不到任何可以启动http服务器并向其部署静态内容的插件。 基本上,我希望过滤静态资源,并将其部署到http服务器,同时以。把war文件发给tomcat。 我寻找类似的东西与嵌入式apache超文本传输协议服务器插件或东西。 动