![](/img/trans.png)
[英]Google Cloud Tasks ignoring `dispatchDeadline`, invoked from node.js
[英]How to implement a pull-queue using Cloud Tasks in Node.js
我正在嘗試在 Node.js 中使用 Cloud Tasks + App Engine 標准環境實現拉取隊列。 所以基本上我試圖從隊列中租用任務。 問題是我只能找到其他語言的示例,而且我在 GCP Node.js 文檔中沒有提到創建或租用拉隊列任務。
請告訴我這是可能的,我不需要在我的項目中開始使用不同的語言來實現拉隊列機制。
這是等效的 Python 文檔的鏈接
- - 編輯 - -
我設法在允許我這樣做的類型中找到了一個參考:
import { v2beta2 } from "@google-cloud/tasks";
const client = new v2beta2.CloudTasksClient();
const [{ tasks }] = await client.leaseTasks({
parent: client.queuePath(project, location, "my-pull-queue"),
maxTasks: 100,
});
...但它給了我一些奇怪的配額錯誤:
錯誤:無法從 my-pull-queue 隊列租用任務:8 RESOURCE_EXHAUSTED:超出配額指標“Alpha API 請求”的配額並限制服務“cloudtasks.googleapis”的“每分鍾 Alpha API 請求數(除非列入白名單,否則應為 0)” .com' 用於消費者 'project_number:xxx'。
我幾乎找不到引用此類配額錯誤的來源,但它似乎源於尚未公開的 API,並且只能在明確授予訪問權限時使用(這將解釋白名單)。
我覺得很奇怪的另一件事是似乎有兩個 beta 客戶端 v2beta2 和 v2beta3,但只有 beta2 類型定義了租用任務的方法。 兩個 beta API 都定義了用於創建 pull-queue 任務的類型。
我想我找到了答案。 它非常隱蔽,但我設法在允許我這樣做的類型中找到了一個參考:
const client = new CloudTasksClient({
libVersion: "v2beta2",
}) as unknown as v2beta2.CloudTasksClient;
const [{ tasks }] = await client.leaseTasks({
parent: client.queuePath(project, location, "my-pull-queue"),
maxTasks: 100,
});
- - 編輯 - -
通過選項傳遞庫版本似乎不起作用。 結果客戶端給出運行時錯誤,因為該對象上不存在leaseTasks
。
然而,下面的方法似乎有效
import { v2beta2 } from "@google-cloud/tasks";
const client = new v2beta2.CloudTasksClient();
...但它給了我一些奇怪的配額錯誤:
錯誤:無法從 my-pull-queue 隊列租用任務:8 RESOURCE_EXHAUSTED:超出配額指標“Alpha API 請求”的配額並限制服務“cloudtasks.googleapis”的“每分鍾 Alpha API 請求數(除非列入白名單,否則應為 0)” .com' 用於消費者 'project_number:xxx'。
我剛剛發現這個聲明 Node.js 不支持拉隊列。
https://github.com/googleapis/nodejs-tasks/issues/123#issuecomment-445090253
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.