Получение количества задач в определенном состоянии в API пакетной службы Azure

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, но я не могу найти способ добавить его в запрос. Есть ли способ использовать $count с API пакетной службы или, возможно, есть совершенно другая альтернатива, например, с помощью необработанных запросов REST в обход API пакетной службы?


person Christoph Wintersteiger    schedule 18.07.2017    source источник


Ответы (1)


Обновлено 31 июля 2017 г.:

Теперь вы можете запрашивать количество задач для задания напрямую, используя get_task_counts. Это вернет TaskCounts для указанного задания.

Судя по всему, вы используете пакет SDK Azure Batch Python, используйте azure-batch версии 3.1.0 или более поздней.

Исходный ответ:

Прямо сейчас выполнение запроса списка в том виде, в котором он у вас есть, — единственный способ выполнить подсчет. Вы можете немного оптимизировать свой запрос, предоставив предложение выбора, в котором сервер возвращает только те свойства, которые вам нужны, что уменьшит объем передаваемых данных. Это распространенный вопрос, и улучшения в этой области находятся в процессе разработки — этот ответ будет обновлен, когда он станет доступен.

Что касается вашего другого вопроса, языковые SDK построены поверх REST API и предоставляют полную функциональность уровня REST.

person fpark    schedule 18.07.2017