Python

DVT позволяет запускать проекты с помощью Python-кода.

Для запуска потребуется любой HTTP-клиент, например, requests:

import requests import time import datetime API_KEY = "API_KEY" DVT_URL = "https://portal" PROJECT_1 = "XXX" PROJECT_1 = "YYY" session = requests.Session() session.headers = {"X-API-KEY": API_KEY} def run_project(project_id: str) -> str: endpoint = f"{DVT_URL}/api/public/projects/{project_id}/tasks/new" params = {"mode": "full"} resp = session.post(endpoint, params=params) resp.raise_for_status() data = resp.json() return data["task_id"] def get_task_info(project_id: str, task_id: str) -> dict: endpoint = f"{DVT_URL}/api/public/projects/{project_id}/tasks/{task_id}/info" resp = session.get(endpoint) resp.raise_for_status() return resp.json() def cancel_task(project_id: str, task_id: str) -> None: endpoint = f"{DVT_URL}/api/public/projects/{project_id}/tasks/{task_id}/cancel" resp = session.post(endpoint) resp.raise_for_status() def exec_project(PROJECT_ID): task_id = run_project(PROJECT_ID) print(f"Запущена задача: {task_id}") while True: info = get_task_info(PROJECT_ID, task_id) status = info.get("status") print(f"Статус задачи {task_id}: {status}") state = status.lower() if state in {"success", "cancelled", "error"}: break time.sleep(10) print(f"Информация о задаче {task_id}: {info}") return state if __name__ == '__main__': # Запустим 1-й проект time1 = datetime.datetime.now() res = exec_project(PROJECT_1) time2 = datetime.datetime.now() delta = time2 - time1 print (f"Длительность сек.: {delta.seconds}") # Запустим 2-й проект, сразу по завершении 1-го if res == "success": time1 = datetime.datetime.now() res = exec_project(PROJECT_1) time2 = datetime.datetime.now() delta = time2 - time1 print (f"Длительность сек.: {delta.seconds}")