Ein kleiner Vorgeschmack auf die API von Rescale

rescale api2

Bei Rescale waren wir in letzter Zeit sehr beschäftigt und arbeiten an einigen spannenden Funktionen. Ganz oben auf der Wunschliste unserer Kunden stand die Möglichkeit, Jobs programmgesteuert auf die Plattform zu verteilen. Um dies zu ermöglichen, arbeiten wir an einer öffentlichen API.

Unser Webservice ist derzeit eine Django-App, deren Endpunkte unser Javascript-Client aufruft, um Jobs zu erstellen und zu überwachen. Die Ausarbeitung unserer internen Datenmodelle und die Konvertierung unserer bestehenden Django-Ansichten in eine öffentliche RESTful-API war ein anspruchsvolles Unterfangen. Wir haben hierfür schließlich das Django REST Framework verwendet.

Das Django REST Framework (DRF) ist ein leistungsstarkes Toolkit für Django. Es bietet eine übersichtliche und leicht erweiterbare Schnittstelle für die Serialisierung, Deserialisierung, Authentifizierung und das Routing Ihrer API. DRF funktionierte problemlos mit unserem mehrstufigen relationalen Modell, und die Migration unserer Django-Formulare zu DRF-Serialisierern war problemlos. Tatsächlich wurde unser Code durch die Verwendung von DRF übersichtlicher und prägnanter, da viele Funktionen der Serialisierer und Viewsets unsere benutzerdefinierte Validierung überflüssig machten.

Anatomie eines Neuskalierungsjobs
Bevor wir auf die Details der API-Endpunkte eingehen, betrachten wir zunächst die Definition eines Rescale-Jobs. Ein Rescale-Job besteht aus zwei Arten von Primärobjekten: Jobanalysen und Jobvariablen. Ein Job kann eine oder mehrere Jobvariablen enthalten. Jobvariablen sind Eingabeparameter, die ein Benutzer für einen Parameter-Sweep angeben kann. Jobanalysen beziehen sich auf die Simulationssoftwarepakete – oder den Analysecode in Rescale-Begriffen –, die Sie für diesen Job ausführen möchten. Jedes Jobanalyseobjekt enthält den Analysecode, den Eingabebefehl, die Hardwareauswahl und die mit der jeweiligen Jobanalyse verknüpften Dateien. Ein Job benötigt mindestens eine Jobanalyse, um ausgeführt werden zu können.

JSON für einen Beispieljob, der einen „Parameter-Sweep“ (manchmal auch als Design of Experiments (DOE) bezeichnet) unter Verwendung einer vom Benutzer hochgeladenen Binärdatei „run_doe“ durchführt, würde folgendermaßen aussehen:

job_data = { 'name':'DOE-Testjob', 'jobvariables':[ { 'name':'index', 'variableType':'Param', 'valueGeneratorType':'FixedRange', 'valueGeneratorSettings':{ 'minvalue':1, 'maxvalue':10, 'increment':1 } } ], 'jobanalyses':[ { 'analysis':{ 'code':'user_included' }, 'command':'./run_doe', 'hardware':{ 'coresPerSlot':1, 'coreType':'standard' }, 'inputFiles':[ { 'id':'pCTmk' } ] } ] }

API-Endpunkte
Sie können die API verwenden, um Dateien auf die Rescale-Plattform hochzuladen und anschließend den JSON-Blob für den Job zu erstellen. Anschließend können Sie Ihren Job mithilfe der entsprechenden API-Endpunkte erstellen, übermitteln und überwachen. Obwohl alle API-Endpunkte über das Internet zugänglich sind, haben wir einen Python-Client entwickelt, der derzeit eine reduzierte Anzahl von API-Aufrufen unterstützt: Datei hochladen Download-Datei Job erstellen Job einreichen Status bekommen Dateien abrufen. Die API befindet sich derzeit in einer privaten Betaphase.

Möchten Sie ein Token für den Zugriff auf die API erhalten?

Wenden Sie sich an einen unserer Experten, der Ihnen zeigt, wie Sie mit Rescale Ihre Computerleistung auf die nächste Stufe heben können.