问题标签 [google-cloud-tasks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1234 浏览

google-app-engine - 谷歌云任务和谷歌应用引擎 Python 3

我正在尝试使用Google Cloud Tasks API

在 python2.7 应用引擎标准中,您拥有这个惊人的库(deferred),它允许您轻松地将工作人员分配给可以异步完成的多个任务。

所以在 webapp2 处理程序中,我可以这样做:

现在我正在开发新的 Google App Engine Python 3 运行时,而延迟库不适用于 GAE Py3。

谷歌云任务是正确的解决方案/替代品吗?

这就是我现在所处的位置......我已经在互联网上搜寻答案,但我的谷歌能力让我失望了。我找到了一些示例,但它们不是很好,它们看起来好像您应该从 gcloud 控制台或本地创建创建/添加任务,但没有从前端 api 端点添加任务的示例。

0 投票
1 回答
100 浏览

node.js - Google Cloud Task Queue RateLimits 配置被忽略

我们正在创建一个设置了速率限制配置的 Google Cloud Tasks 队列 (v2beta3),但是此速率限制配置被忽略,而是使用 Google 的默认值:

随着cloud_tasks_res返回:

根据我们如何完成的文档,它看起来是正确的: https ://googleapis.dev/nodejs/tasks/latest/v2beta3.CloudTasksClient.html#createQueue https://googleapis.dev/nodejs/tasks/latest/google。 cloud.tasks.v2beta3.html#.RateLimits

0 投票
2 回答
502 浏览

python - 在 gae flexible 上长时间运行的云任务会提前终止而不会出错。如何调试?我错过了什么?

我正在使用 python 和烧瓶灵活地在 gae 上运行应用程序。我定期使用 cron 作业调度云任务。这些基本上循环遍历所有用户并执行一些聚类分析。任务终止而不会引发任何类型的错误,但不会执行所有工作(意味着并非所有用户都被循环通过)。它似乎不会在一致的时间 276.5s - 323.3s 发生,也不会在同一个用户处停止。有没有人经历过类似的事情?

我的猜测是我在某处违反了某种类型的资源限制或超时。我想过或尝试过的事情:

  • 应允许云任务运行长达一个小时(根据此:https ://cloud.google.com/tasks/docs/creating-appengine-handlers )

  • 我将 gunicorn 工人的超时时间增加到 3600 以反映这一点。

  • 我有几个工人正在运行。

  • 我试图找出是否存在内存峰值或 CPU 过载,但没有发现任何可疑之处。

抱歉,如果我太含糊或完全没有抓住重点,我对这个问题感到很困惑。感谢您的任何指点。

0 投票
2 回答
460 浏览

node.js - 一次一个实例一个请求 App Engine Flexible

我在用

  • App Engine 灵活的自定义运行时。
  • nodejs,作为基础图像。
  • 表示
  • 用于对请求进行排队的 Cloud Tasks
  • 傀儡师的工作

我的要求

  • 20GB 内存
  • 长期运行的过程

由于我的独特要求,我希望 1 个请求仅由 1 个实例处理。当它空闲或请求超时时,它才会收到一个新请求。在实例处理 1 个请求时,我设法拒绝了其他请求,但无法找出适当的自动扩展设置。

请提出实现这一目标的最佳方法。提前致谢!

0 投票
1 回答
1325 浏览

google-cloud-platform - Google Cloud Tasks HTTP 触发器 - 如何禁用重试

我正在尝试创建一个 Cloud Tasks 队列,如果 HTTP 任务失败,该队列永远不会重试。

根据文档, maxAttempts 应该是我正在寻找的:

每个任务的尝试次数。

Cloud Tasks 将尝试任务 maxAttempts 次(即,如果第一次尝试失败,则将有 maxAttempts - 1 次重试)。必须 >= -1。

因此,如果 maxAttempts 为 1,则应该有 0 次重试。

但是,例如,如果我运行

然后使用以下 Python 代码创建 HTTP 任务:

在队列的 Stackdriver 日志中(我可以看到,因为我--log-sampling-ratio=1.0在创建队列时使用了该日志),该任务显然重试了一次:有一次调度尝试,然后是状态为 UNAVAILABLE 的调度响应,然后是另一次调度尝试,这最后是最后一个调度响应(也表示不可用)。

有没有办法重试0次?

笔记

关于 maxAttempts,文档还说:

该字段与 queue.yaml/xml 中的 task_retry_limit 含义相同。

但是,当我转到task_retry_limit 的描述时,它说:

重试次数。例如,如果指定 0 并且任务失败,则根本不会重试该任务。如果指定 1 并且任务失败,则重试该任务一次。如果未指定此参数,则无限期重试该任务。如果 task_retry_limit 与 task_age_limit 一起指定,则重试任务,直到达到两个限制。

这似乎与 maxAttempts 的描述不一致,因为它表明如果参数为 1,该任务将重试一次。

我已经尝试将 maxAttempts 设置为 0,但这似乎使它假定默认值为 100。

先感谢您。

0 投票
2 回答
180 浏览

google-cloud-platform - 选择您希望执行 Google 任务处理程序的服务

我对谷歌云平台比较陌生,我能够创建应用服务和管理数据库。我正在尝试在 Google Cloud Tasks 中创建一个处理程序(类似于本文档中的 NodeJS 示例。

但是,文档未能清楚地说明如何将部署的服务与请求的内容连接起来。必要性要求我的项目中有多个服务(一个在 Node 中用于管理休息,另一个在 Python 中用于将地理空间数据作为异步任务进行管理)。

我的问题:运行多个服务时,Google Cloud Tasks 如何知道将任务导向哪个服务?

下面的屏幕截图证明我能够向队列请求任务。

在队列中运行的示例任务

0 投票
1 回答
892 浏览

python - Google AppEngine - 使用 max_concurrent_requests 设置为 1 的队列:由于超过了请求截止日期,进程终止

我为我的 AppEngine API 设置了一个任务队列。API 处理大型请求,可能需要长达三个小时才能结束计算,一次处理一项任务。

我在 queue.yaml 文件中将“max_concurrent_requests”设置为 1,这样一次只有一个任务处于活动状态,并且也增加了 gunicorn 超时。

我的问题来了,因为 CloudTask 请求似乎有 10 分钟的超时,之后他们抛出一个错误:进程终止,因为请求截止日期已超过。请确保您的 HTTP 服务器正在侦听 0.0.0.0 和 PORT 环境变量定义的端口上的请求。(错误代码 123)

如何配置我的队列以等待前一个任务完成,而不是简单地超时?

0 投票
1 回答
597 浏览

google-cloud-tasks - 在遥远的未来安排云任务

我正在使用 Python Client for Cloud Tasks API 来安排未来的任务(处理程序作为 AppEngine Flex 服务运行)。

未来调度任务时,限制是Task.schedule_time多少,即未来多远可以调度一个任务?

(文档中提到了 30 天的任务保留期,但没有具体说明这是否仅适用于失败的任务,或者它还暗示了未来调度的硬性限制)。

0 投票
1 回答
559 浏览

google-cloud-platform - Cloud Task 需要“字节”类型的有效负载,如何发送字典?

我正在尝试学习如何将由云功能处理的任务排队。按照提供的示例代码https://cloud.google.com/tasks/docs/creating-http-target-tasks

我还在使用 Python 的示例云函数代码。云函数需要一些 args 或 JSON,如下所示:

但是,当我尝试将任务的有效负载设置为字典时,它说它无法对字典进行编码,那么我该如何发送字符串以外的内容。我本质上是想为云函数发送键和值来解释:

所以我想我的问题是,如何发送带有上下文的信息以及如何解释云功能端的有效负载

基本上,用户上传图像,图像存储在 GCS 中,创建任务以调整图像大小(或执行某些操作),云功能由任务队列触发,它读取存储桶信息以及用户是谁,确实作业,更新 firestore 中的文件元数据以向用户指示作业已完成。

0 投票
4 回答
1298 浏览

gcloud - 如何增加 Gcloud 任务 API 中的最大计划时间?

我对谷歌云任务 API 有疑问。我需要创建具有远计划时间的任务。最长计划时间为 30 天。是否有可能增加该限制或绕过某些问题?