Slot Policy — Управление слотами
n8n Community Edition ограничен 5 активными workflows. Slot Policy определяет какие workflows занимают эти слоты и как их переключать.
❓ Почему только 5 слотов?
n8n использует модель лицензирования:
Community Edition
- ✓ Бесплатно
- ✓ Self-hosted
- ✗ Лимит: 5 активных workflows
- ✗ Нет командной работы
Enterprise
- ✓ Безлимит workflows
- ✓ Команды и RBAC
- ✓ Priority support
- ✗ Платно ($$$)
💡 Решение
Вместо покупки Enterprise лицензии, мы используем систему слотов. Можно иметь сколько угодно workflow-файлов, но активно только 5. Остальные "спят" и могут быть активированы по требованию.
🎯 Визуализация слотов
┌─────────────────────────────────────────────────────────────────┐ │ 5 ACTIVE SLOTS │ │ (n8n community limit) │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────────┐│ │ │ Slot 1 │ web_search_workflow │ [PROTECTED] 🔒 ││ │ ├────────┴────────────────────────────────────────────────────┤│ │ │ Webhook: /webhook/abc-123 ││ │ │ Process: web_search ││ │ │ Usage: 1000+ runs/day ││ │ └─────────────────────────────────────────────────────────────┘│ │ │ │ ┌─────────────────────────────────────────────────────────────┐│ │ │ Slot 2 │ reminder_dispatch_workflow │ [PROTECTED] 🔒 ││ │ ├────────┴────────────────────────────────────────────────────┤│ │ │ Webhook: /webhook/xyz-789 ││ │ │ Process: reminder_dispatch ││ │ │ Usage: Critical for reminders ││ │ └─────────────────────────────────────────────────────────────┘│ │ │ │ ┌─────────────────────────────────────────────────────────────┐│ │ │ Slot 3 │ travel_research_workflow │ [SWAPPABLE] 🔄 ││ │ ├────────┴────────────────────────────────────────────────────┤│ │ │ Webhook: /webhook/trv-456 ││ │ │ Process: travel_research ││ │ └─────────────────────────────────────────────────────────────┘│ │ │ │ ┌─────────────────────────────────────────────────────────────┐│ │ │ Slot 4 │ content_factory_digest_workflow │ [SWAPPABLE] 🔄 ││ │ ├────────┴────────────────────────────────────────────────────┤│ │ │ Webhook: /webhook/cnt-789 ││ │ └─────────────────────────────────────────────────────────────┘│ │ │ │ ┌─────────────────────────────────────────────────────────────┐│ │ │ Slot 5 │ (available) │ [EMPTY] ⬜ ││ │ └─────────────────────────────────────────────────────────────┘│ │ │ └─────────────────────────────────────────────────────────────────┘ INACTIVE WORKFLOWS (спят в файловой системе) ───────────────────────────────────────────── • finance_coach_weekly_workflow.json • web_research_brief_workflow.json • customer_support_workflow.json • data_pipeline_etl.json • ... (сколько угодно)
🔒 Protected Workflows
Некоторые workflows критически важны и не могут быть вытеснены:
| Workflow | Причина защиты |
|---|---|
| web_search_workflow | Основной процесс поиска, используется постоянно |
| reminder_dispatch_workflow | Критический для напоминаний, SLA важен |
Настройка в runtime_policy_json:
{
"n8n": {
"slots": {
"max_active": 5,
"protected": ["web_search_workflow", "reminder_dispatch_workflow"]
}
}
}💻 Управление слотами
Скрипт n8n_slot_switch.sh управляет слотами:
list — Показать слоты
./scripts/n8n_slot_switch.sh list [INFO] Active slots (4/5): 1. web_search_workflow 2. reminder_dispatch_workflow 3. travel_research_workflow 4. content_factory_digest_workflow [INFO] Available workflows (12 total): - customer_support_workflow (active=no) - data_pipeline_etl (active=no) - finance_coach_weekly_workflow (active=no) ...
promote — Добавить в слот
# Добавить workflow в свободный слот ./scripts/n8n_slot_switch.sh promote finance_coach_weekly_workflow --sync [OK] Added into free slot: finance_coach_weekly_workflow # Если слот занят -- заменить конкретный ./scripts/n8n_slot_switch.sh promote new_workflow \ --replace travel_research_workflow --sync [OK] Replaced slot: travel_research_workflow -> new_workflow
demote — Убрать из слота
# Убрать workflow из активных слотов ./scripts/n8n_slot_switch.sh demote travel_research_workflow --sync [OK] Removed active workflow: travel_research_workflow
set — Установить все слоты сразу
# Установить конкретный набор слотов ./scripts/n8n_slot_switch.sh set \ web_search_workflow,reminder_dispatch_workflow,travel_research_workflow \ --sync
⚙️ Опции команды
| Опция | Описание |
|---|---|
| --sync | Запустить n8n_sync_workflows.sh после изменения |
| --dry-run | Показать что изменится, но не применять |
| --replace <name> | При promote: заменить конкретный workflow |
| --max <n> | Переопределить лимит слотов |
| --slots-file <path> | Использовать другой файл слотов |
🎬 Типичные сценарии
Сценарий 1: Тестирование нового workflow
# 1. Посмотреть текущие слоты ./scripts/n8n_slot_switch.sh list # 2. Временно заменить слот 5 на новый workflow ./scripts/n8n_slot_switch.sh promote my_new_workflow --sync # 3. Протестировать... # 4. Вернуть как было ./scripts/n8n_slot_switch.sh demote my_new_workflow --sync
Сценарий 2: Dry-run перед изменением
# Проверить что получится ./scripts/n8n_slot_switch.sh promote new_workflow --replace old_workflow --dry-run [DRY-RUN] Active slots -> 1. web_search_workflow 2. reminder_dispatch_workflow 3. travel_research_workflow 4. content_factory_digest_workflow 5. new_workflow <- будет вместо old_workflow
Сценарий 3: Переключение набора workflows
# Утром: рабочие workflows ./scripts/n8n_slot_switch.sh set \ web_search,reminder_dispatch,travel_research,content_factory,finance_coach \ --sync # Вечером: девелопмент workflows ./scripts/n8n_slot_switch.sh set \ web_search,reminder_dispatch,test_workflow_1,test_workflow_2,test_workflow_3 \ --sync