App Engine 佇列適用的快速入門導覽課程

以下操作說明可讓您嘗試使用 Google Cloud Tasks API 執行 App Engine 佇列的基本作業。

  1. 設定 Cloud 環境
  2. 下載範例程式碼並部署工作站/處理常式
  3. 建立佇列
  4. 建立一個工作並新增到佇列中,佇列會根據內含的設定,將工作傳送至工作站
  5. 清理資源

事前準備

如要設定 Cloud 環境,請建立包含 App Engine 應用程式並啟用計費功能的 GCP 專案。如要進一步瞭解 GCP 專案、App Engine 應用程式及帳單的一般資訊,請參閱這裡

  1. 建立/選取 GCP 專案:
    前往 App Engine 頁面
    1. 選取現有專案名稱或建立新專案。
    2. 記下專案 ID。這個 ID 將做為 Cloud Tasks 要求的參數。
  2. 將 App Engine 應用程式新增到您的專案:
    1. 在「Welcome to App Engine」(歡迎使用 App Engine) 頁面,從 [Your first app] (您的第一個應用程式) 下拉式選單中選取您要使用的語言。
    2. 選取應用程式的地區。這個位置將做為您的 Cloud Tasks 要求的 LOCATION_ID 參數,因此請記下這個資訊。請注意在 App Engine 指令被稱為 europe-westus-central 的兩個位置,在 Cloud Tasks 指令中分別稱為 europe-west1us-central1
    3. 按一下 [Next] (下一步)。如果這是新專案,則會建置後端。
    4. 如果 App Engine 快速入門教學課程開啟,請按一下 [取消教學課程]

  3. 按一下 [連結至帳單帳戶] 並依照精靈指示操作,藉此啟用計費功能。
    前往帳單頁面
    如果您目前還沒有帳單帳戶,請在這裡建立。
  4. 啟用 Cloud Tasks API。
    前往 Cloud Tasks API 頁面
  5. 設定 API 驗證。
    1. 按照操作說明建立服務帳戶。下載具有與帳戶相關聯的 JSON 金鑰的檔案並儲存到本機中。
    2. 這些範例使用 Google Cloud 用戶端程式庫與 App Engine 互動,因此您需要設定環境變數以指向您先前下載的金鑰,讓程式庫使用金鑰驗證您的要求。您可以在不使用用戶端程式庫的情況下建立要求,但這些用戶端程式庫有助您管理與伺服器之間的低階通訊詳細資料,其中也包括驗證。
  6. 安裝並設定 Cloud SDK。這可讓您存取 gcloud 工具。

設定範例應用程式

這個範例應用程式提供透過 Cloud Tasks API 使用 App Engine 佇列的架構。

C#

C# 範例包含兩個應用程式,一個 (TasksSample) 做為指令列工具在本機執行,以建立並新增工作到佇列中,另一個 (CloudTasks) 做為工作站部署於 App Engine 彈性環境以「處理」工作。佇列本身在 App Engine 上執行。

如要下載並安裝範例:

  1. 確認已安裝 .NET Core SDK, version 2.0 或更新版本。

  2. 確認已初始化 gcloud 工具並設定為使用您先前建立的 GCP 專案。

  3. 將範例應用程式存放區複製到本機電腦:

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples

  4. 前往包含 TasksSample 範例程式碼的目錄:

    cd dotnet-docs-samples/cloudtasks/api

  5. 安裝所有依附元件:

    dotnet restore

  6. 前往包含 CloudTasks 程式碼範例的目錄 (dotnet-docs-samples/cloudtasks/appengine) 並安裝所有的依附元件:

    dotnet restore

  7. 編譯應用程式並準備部署:

    dotnet publish

  8. 將工作站服務 (CloudTasks) 部署到 App Engine 彈性環境:

    gcloud beta app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml

  9. 驗證索引頁面是否提供內容:

    gcloud app browse

    您的瀏覽器會開啟 https://{YOUR_PROJECT_ID}.appspot.com/ 並顯示 Hello, World!

Python

Python 範例應用程式包含兩個檔案,一個 (create_app_engine_queue_tasks.py) 做為指令列工具在本機執行,以建立並新增工作到佇列中,另一個 (main.py) 做為工作站部署於 App Engine 以「處理」工作。佇列本身在 App Engine 上執行。

如要下載並安裝範例:

  1. 將範例應用程式存放區複製到本機電腦:

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

  2. 前往包含範例程式碼的目錄:

    cd python-docs-samples/appengine/flexible/tasks/

  3. 安裝所有依附元件:

    pip install -r requirements.txt

  4. 確定已初始化 gcloud 工具並設定為使用您先前建立的 GCP 專案。

  5. 將工作站服務 (main.py) 部署到 App Engine:

    gcloud app deploy

  6. 驗證索引頁面是否提供內容:

    glcoud app browse

    您的瀏覽器會開啟 https://{YOUR_PROJECT_ID}.appspot.com/ 並顯示 Hello, World!

Java

Java 範例應用程式包含兩個檔案,一個 (CreateTask.java) 做為指令列工具在本機執行,以建立並新增工作到佇列中,另一個 (TaskServlet.java) 做為工作站部署於 App Engine 以「處理」工作。佇列本身在 App Engine 上執行。

如要下載並安裝範例:

  1. 將範例應用程式存放區複製到本機電腦:

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git

  2. 前往 Tasks 範例的頂層目錄:

    cd java-docs-samples/appengine-java8/tasks/

  3. 確定已初始化 gcloud 工具並設定為使用您先前建立的 GCP 專案。

  4. 建構並執行本機指令列工具 (CreateTask.java)

    mvn appengine:run

  5. 將工作站服務 (TaskServlet.java) 部署到 App Engine:

    mvn appengine:deploy

PHP

PHP 範例包含兩個應用程式,一個 (/snippets/src/create_task.php) 做為指令列工具在本機執行,以建立並新增工作到佇列中,另一個 (/apps/handler/index.php) 做為工作站部署於 App Engine 彈性環境以「處理」工作。佇列本身在 App Engine 上執行。

如要下載並安裝範例:

  1. 將範例應用程式存放區複製到本機電腦:

    git clone https://github.com/GoogleCloudPlatform/php-docs-samples

  2. 前往 Tasks 範例的頂層目錄:

    cd php-docs-samples/appengine/php72/tasks

    會在 tasks 目錄中看到兩個子目錄:

    • apps/handler:包含要部署到 App Engine 的工作站服務的程式碼
    • snippets:包含本機指令列工具的程式碼
  3. 確認已安裝 Composer。如果要在本機使用,請確定 composer.phar 位於兩個子目錄中。如需本機執行與全域執行之間差異的相關資訊,請參閱 Composer 說明文件。

  4. snippets 目錄中,安裝所有的依附元件:

    composer install
    或只安裝在本機上:
    php composer.phar install

  5. apps/handler 目錄中,安裝所有的依附元件:

    composer install
    或只安裝在本機上:
    php composer.phar install

  6. 確認您已\初始化 gcloud 工具並設定為使用您先前建立的 GCP 專案。

  7. apps/handler 目錄,使用 gcloud 將工作站服務部署到 App Engine:

    gcloud app deploy

  8. 進行檢查,確定包含該服務的應用程式正在執行:

    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 彈性環境以「處理」工作。佇列本身在 App Engine 上執行。

如要下載並安裝範例:

  1. 確定已安裝 gcloud App Engine Go 元件:

    gcloud components install app-engine-go

  2. 確定已初始化 gcloud 工具並設定為使用您先前建立的 GCP 專案。

  3. 將範例應用程式存放區複製到本機電腦:

    go get github.com/GoogleCloudPlatform/golang-samples/appengine/go11x/tasks/...

  4. 前往工作站範例程式碼所在的 tasks/handle_task 目錄:

    cd golang-samples/appengine/go11x/tasks/handle_task

  5. 請注意 app.yaml 檔案,其中包含必要的設定資訊。

  6. 將工作站服務 (handle_task.go) 部署到 App Engine:

    gcloud app deploy

  7. 進行檢查,確定包含該服務的應用程式正在執行:

    gcloud app browse

    您的瀏覽器會開啟 https://{YOUR_PROJECT_ID}.appspot.com/ 並顯示 Hello, World!

Node.js

Node.js 範例包含兩個檔案,一個 (createTask.js) 做為指令列工具在本機執行,以建立並新增工作到佇列中,另一個 (server.js) 做為工作站部署於 App Engine 以「處理」工作。佇列本身在 App Engine 上執行。

如要下載並安裝範例:

  1. 將範例應用程式存放區複製到本機電腦:

    git clone https://github.com/googleapis/nodejs-tasks.git

  2. 前往包含範例程式碼的目錄:

    cd nodejs-tasks/samples

  3. 安裝所有依附元件。

    您可以使用 npm

    npm install
    或者您也可以使用 yarn
    yarn install

  4. 確定已初始化 gcloud 工具並設定為使用您先前建立的 GCP 專案。

  5. 將工作站服務 (server.js) 部署到 App Engine 彈性環境:

    gcloud app deploy app.flexible.yaml

  6. 進行檢查,確定包含該服務的應用程式正在執行:

    gcloud app browse

    您的瀏覽器會開啟 https://{YOUR_PROJECT_ID}.appspot.com/ 並顯示 Hello, World!

Ruby

Ruby 範例包含兩個應用程式,一個 (create_Task.rb) 做為指令列工具在本機執行,以建立並新增工作到佇列中,另一個 (app.rb) 做為工作站部署於 App Engine 彈性環境以「處理」工作。佇列本身在 App Engine 上執行。

如要下載並安裝範例:

  1. 將範例應用程式存放區複製到本機電腦:

    git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git

  2. 前往包含範例程式碼的目錄:

    cd ruby-docs-samples/appengine/cloud-tasks

  3. 安裝依附元件:

    bundle install

  4. 確定已初始化 gcloud 工具並設定為使用您先前建立的 GCP 專案。

  5. 將工作站服務 (app.rb) 部署到 App Engine 彈性環境:

    gcloud app deploy app.yaml

  6. 進行檢查,確定包含該服務的應用程式正在執行:

    gcloud app browse

    您的瀏覽器會開啟 https://{YOUR_PROJECT_ID}.appspot.com/ 並顯示 Hello, World!

如要深入瞭解如何建立 App Engine 工作處理常式,請參閱建立 App Engine 工作處理常式

建立 App Engine 佇列

使用 Cloud SDK gcloud 佇列管理功能在您先前準備的環境中建立佇列。

  1. 在指令列中,輸入下列內容:

    gcloud beta tasks queues create-app-engine-queue my-appengine-queue

  2. 等待佇列初始化完成,然後使用 describe 確認佇列已建立成功:

    gcloud beta tasks queues describe my-appengine-queue

  3. 查看輸出結果是否類似下列內容:

    appEngineHttpQueue: {}
    name: projects/[PROJECT_ID]/locations/[LOCATION_ID]/queues/my-appengine-queue //Note these ids
    rateLimits:
    maxBurstSize: 100
    maxConcurrentDispatches: 1000
    maxDispatchesPerSecond: 500.0
    retryConfig:
    maxAttempts: 100
    maxBackoff: 3600s
    maxDoublings: 16
    minBackoff: 0.100s
    state: RUNNING
    

將工作新增到 App Engine 佇列

C#

在本機建立工作,將工作新增到您設定的佇列,然後將工作遞送到非同步的工作站:

  1. 在電腦上設定下列環境變數。範例應用程式會使用這些變數建立要求,以將工作新增到佇列中:

    export GOOGLE_CLOUD_PROJECT=my-project-id // The project ID you set up above
    export GCP_QUEUE=my-appengine-queue // the queue you created above
    export LOCATION_ID=my-location-id // The region in which your queue is running

    附註:您可以使用下列 gcloud 指令找到位置 ID:

    gcloud beta tasks locations list

  2. 前往 TasksSample 資料夾:

    cd ../api/TasksSample

  3. 建立一個工作並新增一個酬載字串「hello」。您之前部署的 CloudTasks 應用程式有一個端點 log_payload,此端點會以記錄酬載的方式來處理酬載。

    dotnet run createTask --project=$GOOGLE_CLOUD_PROJECT_ID --queue=$GCP_QUEUE --location=$LOCATION_ID --payload=hello

  4. 檢查記錄檔,以確定工作有找到端點:

    gcloud app logs read

Python

在本機建立工作,將工作新增到您設定的佇列,然後將工作遞送到非同步的工作站:

  1. 在電腦上設定下列環境變數。範例應用程式會使用這些變數建立要求,以將工作新增到佇列中:

    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-appengine-queue // The queue you created above
    附註:您可以使用下列 gcloud 指令找到位置 ID:
    gcloud beta tasks locations list

  2. 使用本機的 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

  3. 確認是否已收到酬載:

    gcloud app logs read

Java

在本機建立工作,將工作新增到您設定的佇列,然後將工作遞送到非同步的工作站:

  1. 在電腦上設定下列環境變數。範例應用程式使用下列指令來建立將工作新增到佇列的要求:

    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-appengine-queue // The queue you created above
    附註:您可以使用下列 gcloud 指令找到位置 ID:
    gcloud beta tasks locations list

  2. 建立工作,將目標設為您部署的 Servlet 上的 /task/create 端點,並將酬載設為 hello。酬載可以是要求中的任何資料,而工作站需要有這些資料才能完成工作處理作業:

    mvn exec:java -Dexec.mainClass="com.example.task.CreateTask" 
    -Dexec.args="--project-id $GOOGLE_CLOUD_PROJECT
    --queue $QUEUE_ID --location $LOCATION_ID --payload hello"

  3. 查看記錄以驗證是否已收到酬載:

    gcloud app logs read

PHP

在本機建立工作,將工作新增到您設定的佇列,然後將工作遞送到非同步的工作站:

  1. Navigate to the snippets directory.

  2. 在電腦上設定下列環境變數。範例應用程式使用下列指令來建立將工作新增到佇列的要求:

    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-appengine-queue // The queue you created above
    附註:您可以使用下列 gcloud 指令找到位置 ID:
    gcloud beta tasks locations list

  3. 使用本機程式碼片段 create_task.php 建立工作並新增 hello 的酬載。酬載可以是要求中的任何資料,而工作站需要有這些資料才能完成工作處理作業:

    php src/create_task.php --project=$PROJECT_ID --location=$LOCATION_ID --queue=$QUEUE_ID --payload=hello
    

  4. 查看記錄以驗證是否已收到酬載:

    gcloud app logs read

Go

在本機建立工作,將工作新增到您設定的佇列,然後將工作遞送到非同步的工作站:

  1. 如果您目前仍在 tasks/handle_task 目錄中,請前往 tasks/create_task 目錄。

  2. 在電腦上設定下列環境變數。用戶端會利用這項資訊來建立要求:

     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-appengine-queue // The queue you created above
    附註:您可以使用下列 gcloud 指令找到位置 ID:
    gcloud beta tasks locations list

  3. 建立酬載為 hello 的工作並將工作新增到佇列中。酬載可以是要求中的任何資料,而工作站需要有這些資料才能完成工作處理作業:

    go run . $PROJECT_ID $LOCATION_ID $QUEUE_ID hello 

  4. 藉由顯示工作站服務的記錄,確認是否已收到酬載。

    gcloud app logs read

Node.js

在本機建立工作,將工作新增到您設定的佇列,然後將工作遞送到非同步的工作站:

  1. 在電腦上設定下列環境變數。用戶端會利用這項資訊來建立要求:

    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-appengine-queue // The queue you created above
    附註:您可以使用下列 gcloud 指令找到位置 ID:
    gcloud beta tasks locations list

  2. 建立酬載為 hello 的工作並將工作新增到佇列中。酬載可以是要求中的任何資料,而工作站需要有這些資料才能完成工作處理作業:

    node createTask.js createTask $PROJECT_ID $LOCATION_ID $QUEUE_ID hello 

  3. 藉由顯示工作站服務的記錄,確認是否已收到酬載。

    gcloud app logs read

Ruby

在本機建立工作,將工作新增到您設定的佇列,然後將工作遞送到非同步的工作站:

  1. 在電腦上設定下列環境變數。用戶端會利用這項資訊來建立要求:

    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-appengine-queue // The queue you created above
    附註:您可以使用下列 gcloud 指令找到位置 ID:
    gcloud beta tasks locations list

  2. 建立酬載為 hello 的工作並將工作新增到佇列中。酬載可以是要求中的任何資料,而工作站需要有這些資料才能完成工作處理作業:

    ruby create_task.rb  $GOOGLE_CLOUD_PROJECT_ID $LOCATION_ID $QUEUE_ID hello

  3. 藉由顯示工作站服務的記錄,確認是否已收到酬載。

    gcloud app logs read

如要進一步瞭解如何建立 App Engine 工作並將工作新增到佇列,請參閱建立 App Engine 工作

清除

您在本快速入門導覽課程中使用資源,如要避免系統向您的 GCP 帳戶收取相關費用:

  1. 前往 GCP 主控台的「Projects」(專案) 頁面。

    前往專案頁面

  2. 在專案清單中選取要刪除的專案,然後按一下 [Delete] (刪除)
  3. 在對話方塊中輸入專案 ID,按一下 [Shut down] (關閉) 即可刪除專案。

相關資源

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Tasks 說明文件