Chez Rescale, nous avons été très occupés ces derniers temps avec quelques fonctionnalités intéressantes en préparation. L'un des éléments en tête de la liste de souhaits de nos clients est la possibilité de diffuser des tâches par programmation sur la plateforme. Pour ce faire, nous avons travaillé sur la création d'une API publique.
Actuellement, notre service Web est une application Django, dont les points finaux sont appelés par notre client Javascript pour créer et surveiller les tâches. Étoffer nos modèles de données internes et convertir nos vues Django existantes en une API RESTful publique était tout un défi. Nous avons fini par utiliser Django REST Framework à cette fin.
Le Django REST Framework (DRF) est une boîte à outils puissante pour Django. Il fournit une interface claire et facilement extensible pour gérer la sérialisation, la désérialisation, l'authentification et le routage de votre API. DRF a plutôt bien fonctionné avec notre modèle relationnel multiniveau, et la migration de nos formulaires Django vers les sérialiseurs DRF a été assez simple. En fait, l'utilisation de DRF a rendu notre code plus clair et plus concis, car de nombreuses fonctionnalités de ses sérialiseurs et ensembles de vues rendaient notre validation personnalisée redondante.
Anatomie d'une tâche de redimensionnement
Avant d'entrer dans les détails des points de terminaison de l'API, examinons d'abord comment une tâche de rescale est définie. Une tâche Rescale est composée de deux types d'objets principaux : les analyses de tâche et les variables de tâche. Un travail peut contenir une ou plusieurs variables de travail. Les variables de tâche sont des paramètres d'entrée qu'un utilisateur peut spécifier pour exécuter un balayage de paramètres. Les analyses de tâches font référence aux progiciels de simulation (ou au code d'analyse en termes de Rescale) que vous souhaitez exécuter pour cette tâche. Chaque objet d'analyse de travail contient le code d'analyse, la commande d'entrée, la sélection de matériel et les fichiers associés à cette analyse de travail particulière. Un travail nécessite au moins une analyse de travail pour être exécuté.
JSON pour un exemple de travail effectuant un « balayage de paramètres » (parfois appelé plan d'expériences (DOE)) à l'aide d'un binaire « run_doe » téléchargé par l'utilisateur ressemblerait à :
job_data = { 'nom':'Tâche de test DOE', 'jobvariables':[ { 'nom':'index', 'variableType':'Param', 'valueGeneratorType':'FixedRange', 'valueGeneratorSettings':{ 'minvalue ':1, 'maxvalue':10, 'increment':1 } } ], 'jobanalyses':[ { 'analysis':{ 'code':'user_inclus' }, 'command':'./run_doe', ' matériel':{ 'coresPerSlot':1, 'coreType':'standard' }, 'inputFiles':[ { 'id':'pCTmk' } ] } ] }
Points de terminaison API
Vous pouvez utiliser l'API pour télécharger des fichiers sur la plateforme Rescale, puis créer le blob JSON pour le travail. Vous pouvez ensuite créer, soumettre et surveiller votre tâche à l'aide des points de terminaison d'API appropriés. Bien que tous les points de terminaison de l'API soient accessibles sur le Web, nous avons créé un client Python qui prend actuellement en charge un ensemble réduit d'appels d'API comme suit : téléverser un fichier télécharger un fichier créer_emploi soumettre_job obtenir_statut get_files. L'API est actuellement en version bêta privée.
Intéressé à obtenir un jeton pour accéder à l’API ?
Contactez l'un de nos experts qui vous montrera comment Rescale peut faire passer votre informatique au niveau supérieur.
