Что Бы Одновременно Агент Дважды Не Запускался ?

  • Автор темы Автор темы Mikle77
  • Дата начала Дата начала
M

Mikle77

Есть агент.
Может запускаться как по расписанию так и вручную (по кнопке в которой он запускается на сервере runonserver).

Необходимо сделать так, чтобы когда работает агент, который запустился по расписанию нельзя были запустить этого агента вручную по кнопке.

Может в коде агента можно узщнат что он уже запущен ?
 
Для этого можно "вручную" фиксировать где-нибудь момент запуска(и окончания) агента, при условии, что он отрабатывается на сервере
 
в начале запуска агента создаешь документ-блокировка с полями: название агента и дата запуска, в конце убиваешь этот документ. В этом же агенте перед созданием документа-блокировки - проверка нет ли данного документа для этого агента. если есть выходишь из него, если нет - создаешь и потом удаляешь.
Также не забываем обработчик ошибок, чтобы если вылетел агент с ошибкой он убил свой блокирующий документ и желательно еще 1 агент по времени, чтобы если все-таки зависли такие документы блокировки долгое время(30-60 минут) убивать их принудительно.
 
1. Пересмотреть расписание.
Не запускать по расписанию во время работы пользователей.
2. Еще вариант оставить его только по расписанию раз в 10-30 минут и отобрать кнопку у пользователя.
3. Сделать для документов какой-нибудь промежуточный статус и пусть агент обрабатывает только документы с этим статусом.
На этот "левый" статус переводить документы как раз по той кнопке пользователя.
 
запускаемый по расписанию - это агнет на сервере (как пр-ло) - создать очередь (блокировочный док - это слишком) и сообщение в нем
клиент по кнопке проверяет очередь - не запускается если есть
 
"Количество одновременно запускаемых конкурентных агентов = 1" в настройках сервера не оно?
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab