Все запуски скриптов — ручные, по расписанию, из чата агента и связками «после запуска» — идут через один и тот же движок: одинаковые правила, очередь, окружение и история. Поэтому поведение предсказуемо: что работает по расписанию, так же работает и из чата.
Каждый запуск получает от приложения сведения о себе — кто и зачем его позвал, — а скрипт может вернуть готовый результат, который сохранится в истории. Подробности ниже.
Как запустить
Кнопка «Запустить» — на странице запускаемого скрипта. Запускаются только файлы Python (.py) и shell-скрипты (.sh). Запуск принимается мгновенно: запись о нём создаётся сразу, а сам процесс может подождать свободного места в очереди, если параллельные запуски ограничены.
Вывод в реальном времени
Вывод скрипта идёт потоком в консоль запуска — видно каждую строку по мере появления, а не после завершения. Запуск можно остановить кнопкой «Стоп», если скрипт завис или пошёл не туда.
Окружение — одинаковое для всех запусков
Каждый запуск получает детерминированное окружение: тот же интерпретатор Python (входящий в состав продукта или заданный в настройках), рабочая папка — корень скриптов. Файл .env читается на каждый запуск заново, поэтому правки секретов или настроек подхватываются без перезапуска приложения. Пароли попадают в процесс переменными окружения, из кода их не видно.
Контекст запуска
Скрипту не нужно угадывать, кто его запустил и с какими настройками. Вместе с запуском он получает готовый набор сведений: путь к самому скрипту, номер запуска, откуда запуск (вручную, по расписанию, агентом или связкой), параметры и путь к своей рабочей папке. Данные приходят одним объектом на вход и продублированы переменными окружения — скрипт выбирает удобный способ.
DATA_APP_RUN_ID— номер запуска;DATA_APP_SCRIPT— запускаемый скрипт;DATA_APP_TRIGGER— откуда запуск;DATA_APP_SCHEDULE_ID— запись расписания, если запуск пришёл по ней;DATA_APP_WORK_DIR— личная рабочая папка скрипта для состояния.
Личная рабочая папка — важная часть. Она лежит в постоянном хранилище и переживает перезапуски: в ней удобно держать «последнюю дату выгрузки», курсоры и прочее состояние, по которому скрипт понимает, с какого места продолжать. Временную папку для этого использовать нельзя — её очищает уборщик. Если скрипт ничего этого не читает и не пишет, он работает как раньше, ничего не меняется.
Результат запуска
Скрипт может вернуть итог готовыми данными, а не только строками в журнале. Если последним в выводе идёт объект JSON, Data Agent сохранит его вместе с запуском. В истории запуска появляется блок «Результат» с кнопками «Показать результат» и «Копировать результат» — сразу видно, что именно собрано, не вычитывая журнал целиком. Например, скрипт может вернуть число новых записей, дату последней выгрузки или перечень найденных ошибок.
Если скрипт печатает только текст, результат просто не сохраняется — так тоже можно. Результат — это небольшой итог, а не сами данные: крупные выгрузки для него не предназначены, их место в Lakehouse, а в результате указывают ссылку на них.
Откуда запуск
Каждый запуск несёт метку источника: запущен вручную, по расписанию, агентом из чата или связкой «после запуска» (метка «Хук»). Запуски агента дополнительно привязаны к ETL-сессии и чату — на запуске виден бейдж сессии, по которому можно перейти в чат и посмотреть, о чём шла речь. У запуска-связки, наоборот, указан родительский запуск, после которого он стартовал.
История и логи
Все запуски сохраняются в базе приложения. Раздел «Запуски» — это список с фильтром: у каждого запуска открываются детали, полный вывод и журналы. Даже если скрипт запускался неделю назад, его результат можно посмотреть в любой момент.
Ограничения и состояния
- предельное время работы: по умолчанию запуск не ограничен — выгрузка данных может идти часами. Время задаётся в настройках, у записи расписания или у конкретного запуска от агента; тогда скрипт, работающий дольше, останавливается автоматически;
- лимит параллельных запусков: слишком много одновременных скриптов не перегружают сервер — остальные ждут очереди. Очередь тоже не бесконечна: пока все места заняты, ждать может не более 50 запусков, а следующий запуск отклоняется с сообщением «очередь запусков переполнена» — это защита от случайного шквала запусков;
- состояния запуска: идёт, завершён успешно, завершён с ошибкой, остановлен пользователем, ожидает в очереди, пропущен;
- общий выключатель: в настройках есть переключатель «Включить выполнение скриптов». Когда он выключен, не начинается ни один запуск — ни вручную, ни по расписанию, ни от агента, ни связкой; попытка фиксируется состоянием «Пропущен» с причиной. Это удобно, когда нужно на время полностью остановить работу с данными, например на время переезда.
После запуска — свежие данные
После успешного запуска папка источника в Lakehouse пересканируется: новые и обновлённые данные становятся доступны для запросов сразу, без ручной настройки. Источник появляется или обновляется автоматически — подробнее на странице Источники данных.
Читайте также: Скрипты, Планировщик, Lakehouse.