Мы перенесли расчёты из n8n в чистый Python и сверили их по-честному
У нас бот самопознания построен на n8n: человек пишет дату рождения в ВК, конвейер из сотен нод считает психоматрицу, матрицу судьбы, ХВД и отдаёт разбор. Работает. Но когда в один вечер наш сервер поперхнулся, мы спросили себя: а сколько на самом деле «железа» и движка нужно, чтобы посчитать квадрат Пифагора?
Мы сделали эксперимент: взяли три боевых расчёта — психоматрицу, матрицу судьбы и ХВД — и перевели их из n8n-нод в чистый Python. Затем прогнали оба движка на одних датах и сравнили результат по-инженерному, поле за полем.
Как сравнивали
Скриншотами и «на глаз» сверять нельзя — мы вытащили исходный код расчётных нод прямо из боевого n8n и запустили его в Node.js без обвязки, с эмуляцией n8n-хелперов. Затем тот же вход подали в питон-функции. Сравнивали каждое число: сетка психоматрицы, рабочие числа, все арканы матрицы судьбы (включая возрастной круг и годовые), тип личности, код судьбы, шесть чакр, Инь/Ян, «Хочу/Могу», сексуальный потенциал, реактивность, контуры, четыре задачи, периоды жизни и прогноз на 12 месяцев.
Пять контрольных дат, три продукта, 215 проверок — 0 расхождений. Клон считает байт-в-байт то же, что боевой конвейер.
Цифры
| n8n (боевой) | Python (клон) | |
|---|---|---|
| Инфраструктура | 15 контейнеров: main + 7 воркеров + 7 раннеров, postgres, valkey | 1 процесс 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 проверок на пяти контрольных датах, ноль расхождений. Плюс питон-бот в тестовой группе пишет каждый расчёт в лог-тень, так что пара движков сравнивается и на живых запросах.
Что самое сложное при таком переносе?
Не формулы, а мелочи: формат дампа справочника, високосные месяцы, привязка аркана года к текущей дате. Всё это переносится один-в-один и обязательно сверяется код-в-код.
Ссылки
- n8n — конструктор автоматизации — https://n8n.io
- Python — https://www.python.org