我有一个带有 Python3 服务(默认)和 NodeJS18 服务的 GAE 应用程序。
我当前从 Python3 服务提交 App Engine 任务(不是 HTTP 目标任务),并且这些任务由同一个 Python3 服务执行。我有一个
default
任务队列,这些任务将在其中提交。
现在,我想从 Python3 服务提交一个任务并让 NodeJS18 服务执行它。
我正在使用
google.cloud.tasks_v2
Python 客户端提交任务。您可以选择将任务提交到的队列,但我没有找到指定哪个 GAE 服务应处理该任务的方法。是否可以指定服务来处理任务?
如果我将任务从 NodeJS18 服务提交到同一个默认队列,它会被 NodeJS18 服务执行吗?
我在文档中没有看到任何提及“服务”的内容。
鉴于您必须指定
relative_uri
(这是处理任务的路线),我认为以下是实现您的目标的可能方法
如果您的
dispatch.yaml
文件仅基于路径进行路由(未提及域),那么我认为只需将路径指定为 relative_uri
的值就应该将其路由到正确的服务。
- url: "*/mobile/*"
service: mobile-frontend
- url: "*/work/*"
service: static-backend
我认为,如果您在从
/mobile/mobile_task
调用时将 /work/page-1
指定为任务的relative_uri,它应该被路由到移动前端服务。
[注意:我自己还没有尝试过这个选项]
如果您的
dispatch.yaml
文件路由包含域/子域,那么您可能首先对目标服务的 url(在特定路由处)执行 HTTP 调用(例如 POST),然后该路由将提交任务,例如
blog.example.com
获得服务。这是您希望处理从您的 default
服务blog.example.com/prep_task_invocation/
进行 HTTP 调用,并传递要执行的任务的数据blog.example.com/prep_task_invocation/
会将任务提交给自身(您当前的流程),假设 relative_uri
不会将其路由到另一个服务