本页面演示了如何创建 App Engine 任务处理程序、
处理 App Engine 任务的工作器代码。Cloud Tasks
队列将 HTTP 请求发送到您的任务处理程序。成功处理任务后,处理程序必须将 200
到 299
之间的 HTTP 状态代码发送回队列。任何其他代码都表示任务失败,队列将重试该任务。
App Engine 任务队列请求从 IP 地址 0.1.0.2
发送。另请参阅
发送到 App Engine 环境的请求的 IP 范围。
C#
Go
Java
Node.js
PHP
Python
Ruby
超时
App Engine 任务具有特定的超时, 伸缩类型 运行它们的服务的 Pod 的名称
对于在标准环境中运行的工作器:
- 自动扩缩:任务处理必须在 10 分钟内完成。
- 手动和基本扩缩:请求最长可运行 24 小时。
对于在柔性环境中运行的工作器服务:所有类型的服务都有 60 分钟的时间 超时。
如果处理程序错过截止时间,则队列会假定任务失败, 重试。
读取 App Engine 任务请求标头
Cloud Tasks 队列向 App Engine 处理程序发送的请求具有特殊标头,其中包含处理程序可能想要使用的任务特有的信息。
这些标头在内部设置。如果其中一些出现在应用的外部用户请求中,将会被内部标头替换(由允许设置测试标头的应用管理员登录并发出的请求除外)。
App Engine 任务请求始终包含以下标头:
标头 | 说明 |
---|---|
X-AppEngine-QueueName |
队列名称。 |
X-AppEngine-TaskName |
任务的“短”名称,或者系统为任务生成的唯一 ID(如果在创建时未指定任务名称)。这是整个任务名称中的 my-task-id 值,例如 task_name = projects/my-project-id/locations/my-location/queues/my-queue-id/tasks/my-task-id 。 |
X-AppEngine-TaskRetryCount |
任务已经重试的次数。对于第一次尝试,该值为 0 。此数字包括由于缺少可用实例导致任务失败而从未到达执行阶段的尝试次数。 |
X-AppEngine-TaskExecutionCount |
任务已执行并从处理程序收到响应的次数。由于 Cloud Tasks 在收到成功响应后会删除任务,因此所有先前的处理程序响应都是失败的。此数字不包括由于缺少可用实例而导致的失败次数。请注意,如果在尝试执行之前更新 X-AppEngine-TaskExecutionCount ,则它可能等于 X-AppEngine-TaskRetryCount 。 |
X-AppEngine-TaskETA |
任务的计划运行时间,以 1970 年 1 月 1 日以来的秒数指定。 |
如果您的请求处理程序找到了之前列出的任何标头,它可以 假设请求是一个 Cloud Tasks 请求。
此外,来自 Cloud Tasks 的请求可能包含以下标头:
标头 | 说明 |
---|---|
X-AppEngine-TaskPreviousResponse |
来自上一次重试的 HTTP 响应代码。 |
X-AppEngine-TaskRetryReason |
重试任务的原因。 |
X-AppEngine-FailFast |
表示任务在现有实例不可用时快速失败。 |
目标路由
在 App Engine 任务中,队列和任务处理程序在同一个 Google Cloud 项目中运行。流量在传输过程中被加密,不会离开 Google 数据中心。您无法明确设置协议(例如,HTTP 或 HTTPS)。不过,对处理程序的请求将显示为 都使用了 HTTP 协议
任务可被分派到安全的任务处理程序、不安全的任务处理程序,以及(在支持的运行时环境中)受 login: admin
限制的 URI。由于并非任何用户身份都可以运行任务,因此无法将其分派到受 login: required
限制的 URI。任务调度也不遵循重定向。
后续步骤
- 如需详细了解任务,请参阅 RPC API 参考文档。
- 请参阅 REST API 参考,详细了解任务。