检索 Azure Batch 中处于特定状态的任务数 API

Retrieving the number of tasks in a particular state in the Azure Batch API

Azure Batch API provides the list function, which retrieves an enumerable list of tasks in a job, which takes TaskListOptions,例如,按状态过滤任务。

我只想查询 API 特定状态下的任务数,而 API 不提供相关功能。我可以通过下载一个枚举所有任务来做到这一点,例如像这样:

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

这当然慢得可怕。 OData 规范确实提供了 $count 查询选项,但我找不到将其添加到查询中的方法。有没有办法将 $count 与 Batch API 一起使用,或者是否有完全不同的替代方法,例如,通过绕过 Batch API?

的原始 REST 查询

2017-07-31 更新:

您现在可以使用指定作业的 get_task_counts API. This will return a TaskCounts 对象直接查询作业的任务计数。

看来您正在使用 Azure Batch Python SDK,请使用 azure-batch 版本 3.1.0 或更高版本。

原答案:

目前,执行列表查询是完成计数的唯一方法。您可以通过提供一个 select 子句来稍微优化您的查询,其中服务器只返回您关心的属性,这将减少传输的数据量。这是一个常见的问题,对此 space 的改进正在进行中 - 此答案将在可用时更新。

对于您的其他问题,语言 SDK 构建在 REST 之上 API 并公开 REST 层的全部功能。