👁 В проде часто нужно запускать фоновую задачу или сервис, который может упасть. Например, сканер очереди, обработчик событий или простой демон.
📝 Вместо костылей и бесконечных while True, можно использовать встроенный concurrent.futures с авто-рестартом задач:
import time
from concurrent.futures import ThreadPoolExecutor
def worker():
while True:
print("Задача работает...")
time.sleep(5)
raise Exception("Ошибка!") # тестим падение
with ThreadPoolExecutor(max_workers=1) as executor:
while True:
future = executor.submit(worker)
future.result() # дождёмся падения и перезапустим
🔎 Что происходит:
- Задача запускается в потоке
- При падении
future.result()выбрасывает исключение - Цикл перехватывает его и перезапускает задачу — без внешних обёрток
📌 Зачем нужно:
- Устойчивые фоновые процессы без зависимостей
- Подходит для микросервисов, CLI-инструментов, демонов
- Можно легко адаптировать под асинхронный код или процессы через
multiprocessing
❗️ Такой шаблон — альтернатива громоздким фреймворкам, особенно когда нужно просто «держать живым» кусок кода.
tags: #python #разработка
❤️ @recura_tech



