Замок на задачу — никаких двойных запусков

Сценарий ставит отметку «занято» в Redis на время длинной работы: второй запуск видит её, останавливается с понятной ошибкой и не портит данные.

  • Одновременно работает только один запуск
  • Данные не задваиваются
  • Второй запуск падает понятно, а не молча
  • У замка есть срок — зависшая задача не блокирует всё
Redis

Как это работает

Чтобы связать Redis и , не нужен программист: готовый сценарий соединяет их за пару минут.

  1. Запуск: Запуск из другого сценария
  2. Затем: Установить тайм-аут
  3. Проверка: Переключить
  4. Если да — Получить ключ
  5. Если нет — Установить ключ
  6. Затем: Установить продолжение
  7. Если нет — Снять ключ
  8. Запуск: Запуск вручную
  9. Проверка: Если2
  10. Затем: Активен ли сценарий
  11. Затем: Установить сценарий активным
  12. Затем: Установить сценарий завершенным
  13. Проверка: Если
  14. Если да — Установить сценарий активным1
  15. Затем: Ожидание
  16. Затем: Установить сценарий завершенным1
  17. Если нет — Остановить и вызвать ошибку
  18. Затем: Активен ли сценарий1
  19. Проверка: Если1
  20. Если да — Установить сценарий «запущен»
  21. Затем: Ожидание1
  22. Затем: Установить сценарий «загрузка»
  23. Затем: Ожидание2
  24. Затем: Установить сценарий «завершается»
  25. Затем: Ожидание3
  26. Затем: Установить сценарий завершенным2
  27. Если нет — Остановить и вызвать ошибку1
  28. Затем: Активен ли сценарий2
  29. Затем: Активен ли сценарий3
  30. Проверка: Переключить1

Эту интеграцию Redis и ваших сервисов можно запустить в Scriptera: опишите задачу словами — сценарий соберут, запустят и будут следить, чтобы он работал.