GAE:从一个服务提交任务以由另一服务执行

问题描述 投票:0回答:1

我有一个带有 Python3 服务(默认)和 NodeJS18 服务的 GAE 应用程序。

我当前从 Python3 服务提交 App Engine 任务(不是 HTTP 目标任务),并且这些任务由同一个 Python3 服务执行。我有一个

default
任务队列,这些任务将在其中提交。

现在,我想从 Python3 服务提交一个任务并让 NodeJS18 服务执行它。

我正在使用

google.cloud.tasks_v2
Python 客户端提交任务。您可以选择将任务提交到的队列,但我没有找到指定哪个 GAE 服务应处理该任务的方法。是否可以指定服务来处理任务?

如果我将任务从 NodeJS18 服务提交到同一个默认队列,它会被 NodeJS18 服务执行吗?

python node.js google-cloud-platform google-app-engine
1个回答
0
投票

我在文档中没有看到任何提及“服务”的内容。

鉴于您必须指定

relative_uri
(这是处理任务的路线),我认为以下是实现您的目标的可能方法

  1. 如果您的

    dispatch.yaml
    文件仅基于路径进行路由(未提及域),那么我认为只需将路径指定为
    relative_uri
    的值就应该将其路由到正确的服务。

    • 例如你有
        - url: "*/mobile/*"
         service: mobile-frontend
    
        - url: "*/work/*"
         service: static-backend
    
    

    我认为,如果您在从

    /mobile/mobile_task
    调用时将
    /work/page-1
    指定为任务的relative_uri,它应该被路由到移动前端服务。

[注意:我自己还没有尝试过这个选项]

  1. 如果您的

    dispatch.yaml
    文件路由包含域/子域,那么您可能首先对目标服务的 url(在特定路由处)执行 HTTP 调用(例如 POST),然后该路由将提交任务,例如

    • 假设您已在
      blog.example.com
      获得服务。这是您希望处理从您的
      default
      服务
    • 提交的任务的服务
    • 从不同的(默认)服务,您可以对
      blog.example.com/prep_task_invocation/
      进行 HTTP 调用,并传递要执行的任务的数据
    • 然后,
    • blog.example.com/prep_task_invocation/
      会将任务提交给自身(您当前的流程),假设
      relative_uri
      不会将其路由到另一个服务
© www.soinside.com 2019 - 2024. All rights reserved.