建立發送佇列

本頁說明如何建立和自訂發送佇列,以及如何檢查佇列內容。

使用佇列設定檔建立佇列

如要處理工作,您必須將其新增至發送佇列。App Engine 提供一個名為 default 的預設發送佇列,這個佇列已設定好,隨時可以配合預設設定一起運用。您可以視需要將所有工作新增至預設佇列,不需建立及設定其他佇列。

如要新增佇列或變更預設設定,請編輯您上傳至 App Engine 的應用程式佇列設定檔。免費應用程式最多可以建立 10 個佇列,啟用計費功能的應用程式最多可以建立 100 個佇列。無法以動態方式建立佇列。

這個佇列設定檔定義兩種佇列:

queue:
- name: queue-blue
  target: v2.task-module
  rate: 5/s

- name: queue-red
  rate: 1/s

如要上傳檔案:

gcloud app deploy queue.yaml

新增至 queue-blue 的所有工作都會傳送至目標模組 v2.task-modulequeue-red 的重新整理頻率會從每秒 5 次變更為每秒 1 次。工作將會從佇列中移除,並以每秒 1 項工作的速率傳送至其目標。

如果您刪除某個佇列,必須等待 7 天左右才能再建立名稱相同的新佇列。

您還可以將許多其他參數新增至設定檔,以自訂發送佇列的行為。詳情請參閱佇列設定檔參考資料

定義發送佇列處理速率

您可以定義其他指令 (例如 ratebucket_sizemax_concurrent_requests),藉此控管每個佇列的工作處理速率。

工作佇列會使用憑證區塊來控管工作執行速率。每個已命名的佇列都有憑證區塊,其中所含的憑證最多可達 bucket_size 指定的上限,如果您未指定區塊大小,則最多可以含有 5 個憑證。

每次應用程式執行一項工作時,系統就會從區塊中移除一個憑證。應用程式會繼續處理佇列中的工作,直到佇列區塊中再也沒有憑證為止。App Engine 會依據您為佇列指定的 rate,持續在區塊中補充新的憑證。

如果佇列含有待處理的工作,且佇列的區塊含有憑證,則 App Engine 會同時處理與憑證數量相同的工作數。但是,這樣可能會導致處理作業暴增,不僅耗用系統資源,也會與其他服務使用者的要求產生競爭。

如果不想一次執行太多工作,或想要避免發生資料儲存庫競爭,請使用 max_concurrent_requests

以下範例示範如何設定限制工作的 max_concurrent_requests,同時顯示如何依據應用程式需求和可用的資源來調整區塊大小和速率:

queue:
- name: queue-blue
  rate: 20/s
  bucket_size: 40
  max_concurrent_requests: 10

設定所有佇列的儲存空間限制

您可以使用佇列設定檔來定義工作資料在所有佇列中能夠佔用的總儲存空間量。如要定義總儲存空間限制,請在頂層加入名為 total_storage_limit 的元素:

# Set the total storage limit for all queues to 120MB
total_storage_limit: 120M
queue:
- name: queue-blue
  rate: 35/s

這個值是數字加上單位:B 代表位元組,K 代表 KB,M 代表 MB,G 代表 GB,T 代表 TB。舉例來說,100K 指定的限制是 100 KB。如果新增工作會導致佇列超出其儲存空間限制,則新增工作的呼叫將會失敗。免費應用程式的預設限制是 500M (500 MB)。除非您明確設定,否則付費應用程式沒有限制。您可以運用這項限制來保護應用程式,避免發生 fork 炸彈程式設計錯誤 (讓每項工作在執行期間新增多項其他工作)。

如果應用程式在新增工作時收到配額不足的錯誤訊息,提高總儲存空間限制可能會有所幫助。如果您使用這項功能,強烈建議您根據執行數天工作所需的儲存空間來設定限制。這麼做可以暫時備份佇列,並且一邊解決待處理作業一邊繼續接受新工作,同時仍然可以避免發生 fork 炸彈程式設計錯誤。

在 GCP 主控台中監控佇列

GCP 主控台的「Task Queues」(工作佇列) 頁面會顯示應用程式中所有工作佇列的相關資訊。

  1. 請造訪 GCP 主控台的「Task Queues」(工作佇列) 頁面,然後在頁面頂端的選單列中選取 [Push Queues] (發送佇列) 分頁標籤。

    前往「Push Queues」(發送佇列) 分頁

  2. 「Push Queues」(發送佇列) 分頁會列出應用程式中的所有佇列。按一下佇列名稱會顯示「Task Queue Details」(工作佇列詳細資料) 頁面,您可以在其中查看所選佇列中的所有工作。

後續步驟

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

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

這個網頁
Python 2 適用的 App Engine 標準環境