将任务添加到 Cloud Tasks 队列
本快速入门允许您通过 Cloud Tasks API 使用 Cloud Tasks 队列尝试执行基本操作。
本快速入门中的示例以 App Engine 处理程序为目标,因此您必须部署 App Engine 应用。如果您不使用 App Engine 作为目标,则无需部署 App Engine 应用,并可以停用任何现有的 App Engine 应用。
例如,如果您仅使用 HTTP Target 处理程序,则无需使用 App Engine 应用。对于通用 HTTP 目标,Cloud Tasks 服务会根据任务的配置方式将任务请求转发到位于任何通用 HTTP 端点的工作器。如需详细了解如何使用 HTTP 目标,请参阅创建 HTTP 目标任务。
准备工作
如需为本快速入门设置 Cloud 环境,请创建一个 Google Cloud 项目并添加启用结算功能的 App Engine 应用。如果您在创建 Google Cloud 项目时已拥有结算账号,则系统会自动启用结算功能。详细了解如何管理 Google Cloud 项目、App Engine 应用和常规结算。
创建或选择 Google Cloud 项目:
- 使用右上角的按钮选择现有项目名称或创建新项目名称。
- 记下左上角的下拉框中的项目 ID。该项目 ID 将用作您的 Cloud Tasks 请求的参数。
将 App Engine 应用添加到您的项目中:
在欢迎使用 App Engine 页面点击创建应用。
为您的应用选择一个区域。 此位置将用作 Cloud Tasks 请求的 LOCATION_ID 参数,因此请记下该位置。请注意,App Engine 命令中名为
europe-west
和us-central
的两个位置在 Cloud Tasks 命令中分别称为europe-west1
和us-central1
。在开始页面,只需点击下一页即可。稍后您将处理此问题。如果这是一个新项目,则构建执行环境。
如果系统弹出启用结算窗口,请选择您的结算账号。如果您目前没有结算帐号,请点击创建结算帐号并按照向导说明操作。
在下一步页面上,只需点击以后再说即可。您稍后将访问这些示例并下载 SDK。
启用 Cloud Tasks API。
为 API 设置身份验证。
选择标签页以了解您打算如何使用本页面上的示例:
C#
如需从本地开发环境使用本页面上的 .NET 示例,请安装并初始化 gcloud CLI,然后使用用户凭据设置应用默认凭据。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
为您的 Google 账号创建本地身份验证凭据:
gcloud auth application-default login
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
Go
如需从本地开发环境使用本页面上的 Go 示例,请安装并初始化 gcloud CLI,然后使用用户凭据设置应用默认凭据。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
为您的 Google 账号创建本地身份验证凭据:
gcloud auth application-default login
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
Java
如需从本地开发环境使用本页面上的 Java 示例,请安装并初始化 gcloud CLI,然后使用用户凭据设置应用默认凭据。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
为您的 Google 账号创建本地身份验证凭据:
gcloud auth application-default login
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
Node.js
如需从本地开发环境使用本页面上的 Node.js 示例,请安装并初始化 gcloud CLI,然后使用用户凭据设置应用默认凭据。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
为您的 Google 账号创建本地身份验证凭据:
gcloud auth application-default login
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
PHP
如需从本地开发环境使用本页面上的 PHP 示例,请安装并初始化 gcloud CLI,然后使用用户凭据设置应用默认凭据。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
为您的 Google 账号创建本地身份验证凭据:
gcloud auth application-default login
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
Python
如需从本地开发环境使用本页面上的 Python 示例,请安装并初始化 gcloud CLI,然后使用用户凭据设置应用默认凭据。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
为您的 Google 账号创建本地身份验证凭据:
gcloud auth application-default login
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
Ruby
如需从本地开发环境使用本页面上的 Ruby 示例,请安装并初始化 gcloud CLI,然后使用用户凭据设置应用默认凭据。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
为您的 Google 账号创建本地身份验证凭据:
gcloud auth application-default login
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
设置示例
这些示例提供了一个框架,可尝试通过 Cloud Tasks API 向 Cloud Tasks 队列添加任务。
C#
C# 示例包含两个应用,其中一个应用 (CreateAppEngineTask
) 作为命令行工具在本地运行,用于创建任务以及将任务添加到队列;另一个应用 (CloudTasks
) 作为工作器部署在 App Engine 柔性环境中,用于“处理”任务。
要下载并安装示例应用,请执行以下操作:
确保安装了.NET Core SDK 2.0 版或更高版本。
将示例应用代码库克隆到本地机器:
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples
转到包含
CreateTask
示例代码的目录:cd dotnet-docs-samples/cloudtasks/api/TasksSample/
安装所有依赖项:
dotnet restore
转到包含
CloudTasks
示例代码的目录 (dotnet-docs-samples/cloudtasks/appengine/
) 并安装所有依赖项:dotnet restore
编译应用并为部署做好准备:
dotnet publish
将工作器服务 (
CloudTasks
) 部署到 App Engine 柔性环境:gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml
验证索引页面是否正在提供服务:
gcloud app browse
您的浏览器会打开
https://{YOUR_PROJECT_ID}.appspot.com/
,然后显示Hello, World!
。
Go
Golang 示例应用包含两个文件,其中一个文件 (tasks/create_task/create_task.go
) 作为命令行工具在本地运行,用于创建任务以及将任务添加到队列;另一个文件 (tasks/handle_task/handle_task.go
) 作为工作器部署在 App Engine 中,用于“处理”任务。
要下载并安装示例应用,请执行以下操作:
确保已安装
gcloud
App Engine Go 组件:gcloud components install app-engine-go
将示例应用代码库克隆到本地机器:
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
导航到工作器示例代码的
tasks/handle_task
目录。cd golang-samples/appengine/go11x/tasks/handle_task
请注意
app.yaml
文件,它包含必要的配置信息。将工作器服务 (
handle_task.go
) 部署到 App Engine:gcloud app deploy
执行检查以确保包含该服务的应用正在运行:
gcloud app browse
您的浏览器会打开
https://{YOUR_PROJECT_ID}.appspot.com/
,然后显示Hello, World!
。
Java
此 Java 11 示例使用两个应用:
tasks
应用作为命令行工具在本地运行,用于创建任务并将其添加到队列中。tasks-handler
Spring Boot 应用作为处理 Cloud Tasks 请求的工作器,充当接收任务请求的端点。这是您部署的主 App Engine 应用。
要部署示例应用,请执行以下操作:
- 下载并安装 Java SE 11 开发工具包 (JDK)。
- 完成 Cloud Tasks 设置说明。
下载并安装 Maven 以构建、部署和管理您的应用。
安装 gcloud CLI
app-engine-java
组件:gcloud components install app-engine-java
要下载并安装示例应用,请执行以下操作:
将示例应用代码库克隆到本地机器:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
或者,您也可以下载该示例的 zip 文件并将其解压缩。导航到
tasks-handler
应用的顶级目录:cd java-docs-samples/appengine-java11/tasks-handler/
将
tasks-handler
应用部署到 App Engine:mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
将 PROJECT_ID 替换为您的 Google Cloud 项目的 ID。 如果您的
pom.xml
文件已经指定了您的项目 ID,则您无需在运行的命令中添加-Dapp.deploy.projectId
属性。
Node.js
Node.js 示例应用包含两个文件,其中一个文件 (createTask.js
) 作为命令行工具在本地运行,用于创建任务以及将任务添加到队列;另一个文件 (server.js
) 作为工作器部署在 App Engine 中,用于“处理”任务。
要下载并安装示例应用,请执行以下操作:
将示例应用代码库克隆到本地机器:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
导航到包含示例代码的目录:
cd nodejs-docs-samples/cloud-tasks/snippets
安装所有依赖项。
您可以使用 npm:
npm install
或者您可以使用 yarn:yarn install
将工作器服务 (
server.js
) 部署到 App Engine 标准环境:gcloud app deploy app.yaml
执行检查以确保包含该服务的应用正在运行:
gcloud app browse
您的浏览器会打开
https://{YOUR_PROJECT_ID}.appspot.com/
,然后显示Hello, World!
。
PHP
PHP 示例应用包含两个文件,其中一个文件 (/snippets/src/create_task.php
) 作为命令行工具在本地运行,用于创建任务以及将任务添加到队列;另一个文件 (/apps/handler/index.php
) 作为工作器部署在 App Engine 中,用于“处理”任务。
要下载并安装示例应用,请执行以下操作:
将示例应用代码库克隆到本地机器:
git clone https://github.com/GoogleCloudPlatform/php-docs-samples
导航到 Tasks 示例的顶级目录:
cd php-docs-samples/appengine/standard/tasks
在
tasks
目录中,您将看到两个子目录:apps/handler
:包含要部署到 App Engine 的工作器服务的代码snippets
:包含本地命令行工具的代码
确保已安装 Composer。如果要在本地使用,请确保
composer.phar
位于两个子目录中。如需了解本地运行与全局运行,请参阅 Composer 文档。在
snippets
目录中,安装所有依赖项:composer install
如果仅在本地运行,请使用以下命令:php composer.phar install
在
apps/handler
目录中,安装所有依赖项:composer install
如果仅在本地运行,请使用以下命令:php composer.phar install
在
apps/handler
目录中,使用gcloud app deploy
命令将工作器服务部署到 App Engine:gcloud app deploy
执行检查以确保包含该服务的应用正在运行:
gcloud app browse
您的浏览器会打开
https://{YOUR_PROJECT_ID}.appspot.com/
,然后显示Hello, World!
。
Python
Python 示例应用包含两个文件,其中一个文件 (create_app_engine_queue_tasks.py
) 作为命令行工具在本地运行,用于创建任务以及将任务添加到队列;另一个文件 (main.py
) 作为工作器部署在 App Engine 中,用于“处理”任务。
要下载并安装示例应用,请执行以下操作:
将示例应用代码库克隆到本地机器:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
导航到包含示例代码的目录:
cd python-docs-samples/appengine/flexible_python37_and_earlier/tasks/
安装所有依赖项:
pip install -r requirements.txt
将工作器服务 (
main.py
) 部署到 App Engine:gcloud app deploy
验证索引页面是否正在提供服务:
gcloud app browse
您的浏览器会打开
https://{YOUR_PROJECT_ID}.appspot.com/
,然后显示Hello, World!
。
Ruby
Ruby 示例应用包含两个文件,其中一个文件 (create_Task.rb
) 作为命令行工具在本地运行,用于创建任务以及将任务添加到队列;另一个文件 (app.rb
) 作为工作器部署在 App Engine 中,用于“处理”任务。
要下载并安装示例应用,请执行以下操作:
将示例应用代码库克隆到本地机器:
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
导航到包含示例代码的目录:
cd ruby-docs-samples/appengine/cloud-tasks
安装依赖项:
bundle install
将工作器服务 (
app.rb
) 部署到 App Engine 柔性环境:gcloud app deploy app.yaml
执行检查以确保包含该服务的应用正在运行:
gcloud app browse
您的浏览器会打开
https://{YOUR_PROJECT_ID}.appspot.com/
,然后显示Hello, World!
。
如需详细了解如何创建 App Engine 任务处理程序,请参阅创建 App Engine 任务处理程序。
创建 Cloud Tasks 队列
使用 gcloud CLI gcloud
队列管理功能在您刚才准备的环境中创建队列。
在命令行中输入以下内容:
gcloud tasks queues create my-queue --location=LOCATION
将
LOCATION
替换为队列的首选位置,例如us-west2
。如果您未指定位置,则 gcloud CLI 会选择默认值。等待队列初始化,然后使用
describe
来验证队列是否已成功创建:gcloud tasks queues describe my-queue --location=LOCATION
将
LOCATION
替换为队列的位置。检查输出是否类似于以下内容:
name: projects/
PROJECT_ID
/locations/LOCATION_ID
queues/QUEUE_NAME
# Note these ids rateLimits: maxBurstSize: 100 maxConcurrentDispatches: 1000 maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
向 Cloud Tasks 队列添加任务
C#
在本地创建一项任务,将其添加到您设置的队列,然后将该任务交付给一个异步工作器:
您可以通过在示例应用的代码中手动设置或通过别名设置机器上的以下环境变量。示例应用使用这些变量来创建将任务添加到队列的请求:
export GOOGLE_PROJECT_ID=my-project-id # The project ID you set up above export GCP_QUEUE=my-queue # the queue you created above export LOCATION_ID=my-location-id # The region in which your queue is running
您可以使用以下
gcloud
命令查找 App Engine 应用的地理位置 ID:gcloud tasks locations list
导航到
TasksSample
文件夹:cd ../api/TasksSample
使用
test
创建一项任务并添加载荷(字符串“hello”)。 您之前部署的CloudTasks
应用具有一个端点log_payload
,该端点通过记录载荷来对其进行处理。dotnet test
请检查日志以确保端点已接收到任务:
gcloud app logs read
Go
在本地创建一项任务,将其添加到您设置的队列,然后将该任务交付给一个异步工作器:
如果您仍在
tasks/handle_task
目录中,请导航到tasks/create_task
目录。您可以在机器上手动设置以下环境变量,也可以在示例应用的代码中通过别名进行设置。客户端使用此信息来创建请求:
export PROJECT_ID=PROJECT_ID # The project ID from above export LOCATION_ID=LOCATION_ID # The region in which your queue is running export QUEUE_ID=my-queue # The queue you created above
注意:您可以使用以下gcloud
命令找到地理位置 ID:gcloud tasks locations list
使用载荷
hello
创建任务,并将该任务添加到队列中。 负载可以是工作器完成任务处理过程所需的请求中的任何数据:go run . $PROJECT_ID $LOCATION_ID $QUEUE_ID hello
通过显示工作器服务的日志来验证是否已收到负载。
gcloud app logs read
Java
在本地创建任务,将其添加到您设置的队列,然后将任务交付给异步工作器:
进入
appengine-java11/tasks
目录并编译应用:cd ../tasks mvn package
在您的机器上设置以下环境变量。示例应用使用这些环境变量来创建将任务添加到队列的请求:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID // The project ID you set up above export LOCATION_ID=LOCATION_ID // The region in which your queue is running export QUEUE_ID=MY_QUEUE // The queue you created above
注意:您可以使用以下gcloud
命令找到地理位置 ID:gcloud tasks locations list
使用指定载荷创建以您部署的任务处理程序控制器上的
/tasks/create
端点为目标的任务。载荷可以是工作器完成任务处理所需的请求中的任何数据;在此示例中,该载荷会硬编码到示例中,因此无需指定:mvn exec:java -Dexec.mainClass="com.example.task.CreateTask"
一旦任务被传递给工作器,并且工作器处理了任务,工作器将向 Cloud Tasks 服务返回 2xx 成功状态代码,并自动从队列中删除该任务。通过显示工作器服务的日志来验证是否已收到任务:
gcloud app logs read
Node.js
在本地创建一项任务,将其添加到您设置的队列,然后将该任务交付给一个异步工作器:
您可以在机器上手动设置以下环境变量,也可以在示例应用的代码中通过别名进行设置。客户端使用此信息来创建请求:
export PROJECT_ID=PROJECT_ID # The project ID from above export LOCATION_ID=LOCATION_ID # The region in which your queue is running export QUEUE_ID=my-queue # The queue you created above
注意:您可以使用以下gcloud
命令找到地理位置 ID:gcloud tasks locations list
使用载荷
hello
创建任务,并将该任务添加到队列中。 负载可以是工作器完成任务处理过程所需的请求中的任何数据:node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello
通过显示工作器服务的日志来验证是否已收到负载。
gcloud app logs read
PHP
在本地创建任务,将其添加到您设置的队列,然后将该任务交付给异步工作器:
导航到
snippets
目录。您可以在机器上手动设置以下环境变量,也可以在示例应用的代码中通过别名进行设置。示例应用使用这些环境变量来创建将任务添加到队列的请求:
export PROJECT_ID=PROJECT_ID # The project ID from above export LOCATION_ID=LOCATION_ID # The region in which your queue is running export QUEUE_ID=my-queue # The queue you created above
注意:您可以使用以下gcloud
命令找到地理位置 ID:gcloud tasks locations list
使用本地代码段
create_task.php
创建任务,然后添加hello
的载荷。负载可以是工作器完成任务处理过程所需的请求中的任何数据:php src/create_task.php $PROJECT_ID $LOCATION_ID $QUEUE_ID hello
检查日志以验证是否收到了负载:
gcloud app logs read
Python
在本地创建任务,将其添加到您设置的队列,并将该任务交付给异步工作器:
您可以在机器上手动设置以下环境变量,也可以在示例应用的代码中通过别名进行设置。示例应用使用这些变量来创建将任务添加到队列的请求:
export PROJECT_ID=PROJECT_ID # The project ID you set up above export LOCATION_ID=LOCATION_ID # The region in which your queue is running export QUEUE_ID=my-queue # The queue you created above
注意:您可以使用以下gcloud
命令找到地理位置 ID:gcloud tasks locations list
使用本地
create_app_engine_queue_task.py
创建任务,然后添加hello
的载荷。负载可以是工作器完成任务处理过程所需的请求中的任何数据:python create_app_engine_queue_task.py --project=$PROJECT_ID \ --location=$LOCATION_ID --queue=$QUEUE_ID --payload=hello
验证是否收到了负载:
gcloud app logs read
Ruby
在本地创建一项任务,将其添加到您设置的队列,然后将该任务交付给一个异步工作器:
您可以在机器上手动设置以下环境变量,也可以通过示例应用的代码进行设置,或者通过别名进行设置。客户端使用此信息来创建请求:
export GOOGLE_CLOUD_PROJECT=my-project-id # The project ID from above export LOCATION_ID=my-location-id # The region in which your queue is running export QUEUE_ID=my-queue # The queue you created above
注意:您可以使用以下gcloud
命令找到地理位置 ID:gcloud tasks locations list
使用载荷
hello
创建任务,并将该任务添加到队列中。 负载可以是工作器完成任务处理过程所需的请求中的任何数据:ruby create_task.rb $GOOGLE_CLOUD_PROJECT_ID $LOCATION_ID $QUEUE_ID hello
通过显示工作器服务的日志来验证是否已收到负载。
gcloud app logs read
清理
为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。
- 在 Google Cloud 控制台中,进入管理资源页面。
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击关闭以删除项目。
后续步骤
现在您已完成向 Cloud Tasks 队列添加任务的操作,请查看以下页面,继续探索 Cloud Tasks:
- 管理现有任务和队列,包括通过管理队列和任务将其删除。
- 按照创建 Cloud Tasks 队列指南创建和配置 Cloud Tasks 队列。
- 参阅 gRPC API 参考,详细了解如何使用 gRPC 进行队列管理。
- 参阅 REST API 参考,详细了解如何使用 REST 进行队列管理。
- 参阅 Cloud Tasks 概览,了解关于 Cloud Tasks 队列的更多信息