【问题标题】:Cloud Tasks API for python2.7 google app engine适用于 python2.7 谷歌应用引擎的 Cloud Tasks API
【发布时间】:2019-11-07 11:35:46
【问题描述】:

我在 Google App Engine Python 2.7 下创建了一个项目。我使用queue.yaml 创建了一些任务,并使用glcoud 命令进行了部署。当我转到“任务队列”部分下的 Google App Engine 控制台时,它会重定向到 Cloud Tasks 页面。我可以看到我的 App Engine 队列列在 Cloud Tasks 下。

我还没有启用“Cloud Tasks API”服务,但是当我启动后台任务时,哪个服务正在处理队列?那么如果我想在 App Engine Python 2.7 中使用 Cloud Tasks 服务,我应该如何进行?

我已关注文档https://cloud.google.com/tasks/docs/dual-overview,其中对于 Python 2.7,我们可以通过 App 引擎任务队列 API 访问 Cloud Tasks 服务。使用 Cloud Tasks API 服务有一些关键的延迟,例如延迟队列。我只是想确保这些功能在我迁移到 Cloud Tasks 时可用。两种服务如何共存?

【问题讨论】:

    标签: python python-2.7 google-app-engine google-cloud-platform


    【解决方案1】:

    在第一代标准环境GAE(python 2.7)服务中你应该继续使用Task Queue API,没有弃用说明。

    Task Queue API 在其他环境中不可用,因此对于这些服务,您必须使用更新的 Cloud Tasks API(至少最初是基于第一代标准环境服务,但现在它支持多个HTTP 端点)。

    您不必太担心 Cloud Tasks 页面 - 由于它们的相似之处,通过通用 GUI 管理这两个产品很有意义,但是这两个产品继续独立运行。我想,根据您使用的 API,您可以同时使用这两个功能(当然是针对不同的任务)并通过通用 GUI 管理这两个功能。

    您不能确切地谈论哪个服务处理队列,因为同一队列中的任务可能由不同的服务处理。例如,在 GAE 推送队列中,targeting 一个任务有 3 种方式:

    • 在构建任务时声明目标。您可以使用 target 参数显式设置目标 taskqueue.add() 函数。请参见上面的示例。
    • queue.yaml 中定义队列时包括target 指令,如queue-bluedefinition。所有任务 添加到具有target 的队列将使用该目标,即使 在构建时为任务分配了不同的目标。
    • 如果前两种方法都没有指定目标,那么任务的目标就是服务的版本 将其排入队列。请注意,如果您将默认服务中的任务排入队列 和版本以这种方式,默认版本更改之前 任务执行后,它将在新的默认版本中运行。

    在 Cloud Tasks 中,目标范围更广 - 任务目标甚至不一定是 GAE 服务。来自Cloud Tasks queues with HTTP targets

    对于通用 HTTP 目标,Cloud Tasks 服务转发 对工作人员的任务请求,位于任何通用 HTTP 端点, 例如Cloud FunctionsCloud RunGKECompute Engine,甚至是本地网络服务器,并根据任务的方式 已配置。

    延迟队列同样具有误导性,您应该指的是延迟任务。一般来说,使用它们有两个主要原因:

    在某些情况下,您可能需要一系列不同的小任务 异步处理,但您不想完成 设置单独的不同处理程序,App Engine SDK 允许您 使用运行时特定的库来创建简单的函数来管理 这些任务。此功能在 Cloud Tasks 中不可用。笔记, 不过,可以在未来使用 Cloud 安排正常任务 任务。

    【讨论】:

    • 来自这个答案:“我想,根据您使用的 API,您可以同时使用这两个功能(当然,对于不同的任务)并通过通用 GUI 管理这两个功能。”确实可以假设同时使用 Task Queues API 和 Cloud Tasks API。但作为一个提示,文档页面Using Queue management versus queue.yaml 建议不要同时使用这些 API。
    • @hlp 这是一个很好的指针,确实有陷阱,在这种情况下必须小心。
    【解决方案2】:

    “Cloud Tasks API”提供了一个 REST API,您可以使用该 API 从第二代 App Engine 标准环境运行时、任何 App Engine 柔性环境运行时,甚至完全在 App Engine 之外添加任务。

    当您创建第一代 App Engine 推/拉队列时,您无需直接使用此 API,但是正在创建的任务与您使用云任务 API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 2021-02-02
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多