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
查询选项,但我找不到将其添加到查询中的方法。有没有办法在批处理API中使用$count
,或者是否有一个完全不同的替代方案,例如,通过原始REST查询绕过批处理API?
答案 0 :(得分:2)
更新2017-07-31:
您现在可以使用get_task_counts
API直接查询作业的任务计数。这将返回指定作业的TaskCounts
对象。
如图所示,您使用的是Azure Batch Python SDK,请使用azure-batch
3.1.0或更高版本。
原始答案:
现在,执行列表查询是实现计数的唯一方法。您可以通过提供一个select子句来稍微优化您的查询,其中只有服务器返回您关心的属性,这将减少传输的数据量。这是一个常见的问题,这个空间的改进正在进行中 - 这个答案将在可用时更新。
对于您的另一个问题,语言SDK构建在REST API之上,并公开REST层的全部功能。