Блог Вход через ВК

Мы перенесли расчёты из n8n в чистый Python и сверили их по-честному

· Теги: автоматизация боты python n8n

У нас бот самопознания построен на n8n: человек пишет дату рождения в ВК, конвейер из сотен нод считает психоматрицу, матрицу судьбы, ХВД и отдаёт разбор. Работает. Но когда в один вечер наш сервер поперхнулся, мы спросили себя: а сколько на самом деле «железа» и движка нужно, чтобы посчитать квадрат Пифагора?

Мы сделали эксперимент: взяли три боевых расчёта — психоматрицу, матрицу судьбы и ХВД — и перевели их из n8n-нод в чистый Python. Затем прогнали оба движка на одних датах и сравнили результат по-инженерному, поле за полем.

Как сравнивали

Скриншотами и «на глаз» сверять нельзя — мы вытащили исходный код расчётных нод прямо из боевого n8n и запустили его в Node.js без обвязки, с эмуляцией n8n-хелперов. Затем тот же вход подали в питон-функции. Сравнивали каждое число: сетка психоматрицы, рабочие числа, все арканы матрицы судьбы (включая возрастной круг и годовые), тип личности, код судьбы, шесть чакр, Инь/Ян, «Хочу/Могу», сексуальный потенциал, реактивность, контуры, четыре задачи, периоды жизни и прогноз на 12 месяцев.

Пять контрольных дат, три продукта, 215 проверок — 0 расхождений. Клон считает байт-в-байт то же, что боевой конвейер.

215 сверок — 0 расхожденийПять контрольных дат, три продукта: каждое число обоих движков совпало.
в ~135 раз меньше памяти24 МБ у питон-движка против ~3,2 ГБ у боевого n8n-стека.
15 контейнеров → 1 процессВместо main + 7 воркеров + 7 раннеров, postgres и valkey — один systemd-юнит.

Цифры

n8n (боевой)Python (клон)
Инфраструктура15 контейнеров: main + 7 воркеров + 7 раннеров, postgres, valkey1 процесс systemd
Память~3,2 ГБ24 МБ (в ~135 раз меньше)
Скорость чистого расчётапсихоматрица 0,04 мс · матрица 0,03 мспсихоматрица 0,02 мс · матрица 0,03 мс · ХВД 3,9 мс
Код расчётов~82 КБ JS в 20+ нодах на продукт + справочник из 1866 строк в Supabase~430 строк Python, справочник — JSON-файл рядом
Зависимости для расчётаСУБД, очередь, воркеры, сеть между контейнераминет
Отказоустойчивостьупал docker — упало всёупал процесс — systemd перезапустил за 3 сек

Скорость «голой математики» у обоих — доли миллисекунды: узкое место n8n не в вычислениях, а в обвязке. Каждый запрос пользователя в n8n — это путь через Supabase, очередь и воркеры; в питон-версии это один вызов функции.

Что мы поняли — три вывода

Снаружи коротко: наведите на карточку (на телефоне — коснитесь) — раскроется полный вывод.

n8n — не «плохо»конструктор для живого продукта

Это конструктор: нумеролог меняет тексты трактовок и порядок блоков, не трогая код, воркфлоу видно глазами, новый продукт собирается за вечер. Пока продукт живёт и меняется — n8n идеален.

НАВЕДИТЕ, ЧТОБЫ РАСКРЫТЬ

Python — это про зрелостькогда алгоритм устаканился

Когда алгоритм перестал меняться каждую неделю, конструктор становится балластом: три гигабайта памяти и 15 контейнеров ради арифметики, которую делает один файл без единой зависимости.

НАВЕДИТЕ, ЧТОБЫ РАСКРЫТЬ

Перевод требует дисциплиныриск не в формулах, а в мелочах

Сокрытие COPY-формата дампа, високосные месяцы справочника, «аркан года считается от даты сегодня» — всё это надо переносить один-в-один и обязательно сверять код-в-код, как мы сделали, а не «на глаз».

НАВЕДИТЕ, ЧТОБЫ РАСКРЫТЬ

Как это устроено у нас теперь

Боевой конвейер продолжает работать на n8n — пользователям ничего не изменилось. Рядом в тестовой группе живёт питон-бот: команды !психоматрица, !матрица, !хвд отвечают чистым движком за миллисекунды, а каждое обычное сообщение, содержащее дату, записывает расчёт в лог-тень — так мы наблюдаем за парой движков в реальной жизни, не трогая бой.

Следующий шаг — по одному переносим остальные продукты

Нумерологический конвейер на 70 расчётных блоков, дизайн человека — его движок, кстати, уже давно на Python. Если тень за месяц не найдёт ни одного расхождения — питон-движок станет ядром расчётов, а n8n останется там, где он хорош: в оркестрации текстов и PDF.

Вопрос — ответ

Почему бы просто сразу не писать всё на Python?

Пока продукт меняется каждую неделю, n8n быстрее: нумеролог правит тексты трактовок и порядок блоков без программиста. Python выигрывает тогда, когда алгоритм устаканился — один файл без зависимостей вместо пятнадцати контейнеров.

Насколько можно доверять клону расчётов?

Мы сверяли не «на глаз»: вытащили исходный код расчётных нод из боевого n8n, прогнали оба движка на одних датах и сравнили каждое число — 215 проверок на пяти контрольных датах, ноль расхождений. Плюс питон-бот в тестовой группе пишет каждый расчёт в лог-тень, так что пара движков сравнивается и на живых запросах.

Что самое сложное при таком переносе?

Не формулы, а мелочи: формат дампа справочника, високосные месяцы, привязка аркана года к текущей дате. Всё это переносится один-в-один и обязательно сверяется код-в-код.