2017-07-18 6 views
0

Die Azure Batch API-Funktion stellt die list-Funktion bereit, die eine aufzählbare Liste von Tasks in einem Job abruft, z. B. TaskListOptions, um Tasks nach Status zu filtern.Abrufen der Anzahl der Tasks in einem bestimmten Status in der Azure Batch-API

Ich möchte die API nur für die Anzahl der Aufgaben in einem bestimmten Zustand abfragen und die API bietet keine Funktion dafür. Ich kann es tun, indem eine Aufzählen alle Aufgaben herunterladen, zum Beispiel wie folgt:

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

Das ist natürlich schrecklich langsam. Die OData-Spezifikation bietet die Abfrageoption $count, aber ich kann keine Möglichkeit finden, das auf die Abfrage hinzuzufügen. Gibt es eine Möglichkeit, $count mit der Batch-API zu verwenden, oder gibt es vielleicht eine völlig andere Alternative, z. B. über unformatierte REST-Abfragen, die die Batch-API umgehen?

Antwort

2

2017-07-31 Aktualisiert:

Sie nun die Aufgabe zählt für einen Job direkt abfragen können mit dem get_task_counts API. Dies wird ein TaskCounts Objekt für den angegebenen Job zurückgeben.

Es scheint, dass Sie das Azure Batch Python SDK verwenden, verwenden Sie bitte azure-batch Version 3.1.0 oder höher.

Ursprüngliche Antwort:

Gerade jetzt, tun eine Liste Abfrage, wie Sie haben, ist es der einzige Weg, zählt zu erreichen. Sie können Ihre Abfrage leicht optimieren, indem Sie eine Auswahlklausel bereitstellen, bei der nur die Eigenschaften, die Ihnen wichtig sind, vom Server zurückgegeben werden, wodurch die Menge der übertragenen Daten reduziert wird. Dies ist eine häufige Frage und Verbesserungen in diesem Bereich sind auf dem Weg - diese Antwort wird aktualisiert, wenn verfügbar.

Zu Ihrer anderen Frage sind die Sprach-SDKs auf der REST-API aufgebaut und bieten die volle Funktionalität der REST-Ebene.

+0

Super, danke für das Update! –

Verwandte Themen