How it works - wildberries-tech/universal-harvester GitHub Wiki

Приближённая схема

Приближённая схема работы выгляди так: img

На каждый запуск сценария одновременно запускаются экземпляры движка для каждого шага. Экземпляр движка это отдельный процесс python engine.py , таким образом обеспечивается параллельность выполнения шагов. Далее для каждого шага:

  1. Выделяются параметры конкретно для этого шага (раскрытие conjoined).
  2. JSON шага модифицируется согласно сценарию (replacement)
  3. Если у шага есть зависимости (по apply или данные используются в sqlite3/duckdb/pandas), движок ждёт выполнения этих шагов.
  4. Движок проверяет превышение допустимого количества шагов, работающих с конкретным источником, если значение превышено, то происходит ожидание момента, когда эти экземпляры движков будут выполнены.
  5. Происходит инъектирование параметров в JSON шага и исполнение, для apply это повторяется на каждую запись apply данных.
  6. Происходит запись результата выполнения в storage.
  7. Если это последний выполняемый в сценарии шаг, то происходит оповещение пользователя о выполнении.