TGViewer
Python/ django Python/ django @pythonl · 58.6K subscribers
Post #4888 7.79K
🎯 Практическое руководство: Signals — реактивное управление состоянием в Python

Недавно вышло отличное руководство «The Missing Manual for Signals: State Management for Python Developers», где автор показывает, как внедрять реактивную модель на Python с помощью библиотеки

Почему Signals полезны

Стандартный подход—императивный—скрывает зависимости между переменными, что ведёт к ошибкам:


class OrderService:
def add_order(self, order):
self.orders.append(order)
self.total += order.amount
self.avg = self.total / len(self.orders)
self.notify_if_needed()
self.track_analytics()


Если забыть обновить одно значение — всё сломается.

Как работают Signals

Signals = реактивные переменные, которые:

1. Хранят значение (`Signal`)
2. Автоматически вычисляют производные (`Computed`)
3. Выполняют побочные действия (`Effect`) на изменениях

Пример:


from reaktiv import Signal, Computed, Effect

orders = Signal([])
total = Computed(lambda: sum(o.amount for o in orders()))
avg = Computed(lambda: total() / len(orders()) if orders() else 0)
Effect(lambda: notify(avg()) if avg() > 100 else None)

orders.update(lambda os: os + [new_order])


Теперь всё обновляется автоматически — вручную ничего делать не нужно.

Когда стоит применять


* Сложные производные значения, зависящие от нескольких источников
* Реальные Cascading-настройки, например, конфиг, кэши, соединения
* Сценарии real-time: дашборды, метрики, воркфлоу

Когда лучше не использовать

* Простые последовательные преобразования
* Одноразовые API-вызовы
* Прямолинейные функции (например, вычисление налога)

Основные преимущества

- ✅ Чёткое, декларативное управление зависимостями
- ✅ Обновления только нужных значений благодаря ленивому пересчёту
- ✅ Упрощение тестирования и устранение ошибок обновления

Реальные примеры

- Управление конфигурацией микросервисов
- Реализация real-time дашбордов
- Мониторинг состояния кластера, триггеры скейлинга

💡 Итог: Signals — отличная альтернатива громоздкому императиву.
Декларируешь связь один раз, и система сама поддерживает согласованность.

Полезно как для backend‑разработчиков, так и для ML‑инженеров.
📚 Материал — ~16 минут чтения, и он того стоит

📌 Читать

@pythonl
  • ❤ 10
  • 👍 9
  • 🔥 4
  • 🎉 1
More from @pythonl
  1. Oct 4, 2026🐍 Python тормозит? В 3.15 добавили инструмент, который покажет где Tachyon (`profiling.sa…
  2. Oct 2, 2026webAI выпустила TwIL-LM3-Pro - компактную модель на 3,66B параметров специально для формал…
  3. Oct 1, 2026🔥 Бесплатный курс по Claude Code на русском: от установки до команды агентов На GitHub вы…
  4. Sep 30, 2026🖥 Cayu - open-source runtime для долгоживущих ИИ-агентов на Python Проект закрывает инфра…
  5. Sep 29, 2026🖥 Примеры кода на Python 2026: лучшие практики, разбор и задачи с решениями Python пример…
  6. Sep 28, 2026🚀 Jina-OCR-v1 разбирает целые страницы в Markdown со скоростью 2,57 страницы/с Jina AI пр…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →