2017-07-18 53 views
0

Azure Batch API提供了list函數,該函數檢索作業中可枚舉的任務列表,其中包含TaskListOptions,用於例如按狀態篩選任務。檢索Azure批處理API中特定狀態下的任務數

我想僅查詢特定狀態下的任務數量,並且API不提供該功能。我可以通過下載一個枚舉所有的任務去做,比如像這樣:

n = sum(1 for t in bsc.task.list(job.id, bm.TaskListOptions(filter="state eq 'Completed'")))

當然,這是可怕的慢。 OData規範提供了$count查詢選項,但我找不到將其添加到查詢的方法。有沒有辦法將$count與批處理API一起使用,或者可能存在完全不同的替代方法,例如,通過繞過批處理API的原始REST查詢?

回答

2

更新2017年7月31日:

您現在可以直接使用get_task_counts API查詢任務計數工作。這將返回指定作業的TaskCounts對象。

由於看起來您使用的是Azure Batch Python SDK,請使用azure-batch版本3.1.0或更高版本。

原來的答案:

眼下,做一個列表查詢,你擁有它是實現計數的唯一途徑。您可以通過提供select子句來稍微優化您的查詢,其中只有您關心的屬性由服務器返回,這將減少傳輸的數據量。這是一個常見的問題,在這個空間的改進正在他們的路上 - 這個答案將在可用時更新。

對於您的其他問題,語言SDK構建在REST API之上,並公開了REST層的全部功能。

+0

太棒了,感謝您的更新! –