簡體   English   中英

使用Cloud Task,Cloud Functions和GAE快速創建雲任務

[英]Rapidly creating cloud tasks using Cloud Task, Cloud Functions, and GAE

我正在使用App Engine根據列表中的項目觸發多個Cloud Task的創建:

function_url="https://us-central1-myproject.cloudfunctions.net/some-cloud-function"

someTasks = [
{'id': 'task-1'},
{'id': 'task-2'},
{'id': 'task-3'},
...
{'id': 'task-1000'},
]

當前使用以下任務創建任務:

Parallel(backend='threading', n_jobs=100)(
        delayed(create_document_task)(function_url=function_uri, data=task) for task in someTasks 
                    )

上面的代碼並行創建任務,並指示任務隊列將有效負載定向到該特定的雲功能。

並行執行此操作是否是快速創建任務的正確方法?

- I am posting this as an answer, due to the amount of text not fitting in a comment.

似乎上述(在注釋中)方法:

  • 隊列(“ someQueue”)。add_async(任務)

確實是一種舊方法。 此方法在Task Queue REST API(v1)中實現 ,以便將任務或任務列表異步添加到任務隊列中

然而,隨着指出這里 ,App Engine的任務隊列REST API(V1),被拒絕了作為2018年2月20日的獨立產品雲計算任務提供的REST API ,你可以用它來從第二代App Engine的標准環境中添加任務運行時,任何App Engine靈活環境運行時,甚至完全不在App Engine外部。

此API 包括“add_async()”功能。 更具體地說, 這里這里確認,由於App Engine SDK的用戶可以選擇執行異步向隊列添加任務的功能,因此無法通過Cloud Tasks API使用。

但是,當需要添加大量的雲任務(例如數百萬或數十億)時, 兩次注入模式可能會有用

要實現此方案,您需要創建一個新的注入器隊列,該注入器隊列的單個任務將包含用於添加所使用的原始隊列的多個(100)任務的信息。 在該注入器隊列的接收端將是一個服務,該服務會將預期任務實際添加到原始隊列中。 盡管此服務中的任務添加是同步的,並且是1比1的,但它將為您的主應用程序提供異步接口以批量添加任務。 通過這種方式,您可以克服主應用程序中同步進行1比1任務添加的限制。

請注意, 建議將任務添加到隊列的500/50/5模式是為了避免任何(隊列/目標)過載。

由於我沒有找到此實現的任何示例,因此,我將在找到答案后立即對其進行編輯。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM