0

Azure Batch API提供list函数,该函数检索作业中的可枚举任务列表,该列表采用TaskListOptions,例如按状态过滤任务。

我想仅查询 API 以获取特定状态下的任务数,并且 API 没有为此提供函数。我可以通过下载枚举所有任务来做到这一点,例如:

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

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

4

1 回答 1

2

2017 年 7 月 31 日更新:

您现在可以直接使用get_task_countsAPI 查询作业的任务计数。这将返回TaskCounts指定作业的对象。

由于您使用的是 Azure Batch Python SDK,请使用azure-batch3.1.0 或更高版本。

原答案:

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

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

于 2017-07-18T15:07:22.107 回答