2013-02-12 5 views
0

У меня есть сервер linux с тремя экземплярами оболочки 2, и я хотел бы регулярно выполнять внешний скрипт Scala, который имеет доступ ко всем прикладным средам (моделям), и что выполняется только один раз за раз.Выполнять внешний скрипт на сервере с несколькими экземплярами фрейма 2.

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

На самом деле я хотел бы делать такие же вещи, как Ruby on Rails, для тех, кто их знает.

+0

Это половина дубликата этого вопроса: http://stackoverflow.com/questions/13765466/periodic-jobs-when-running-multiple-servers/13766458 – Schleichardt

ответ

0

Создайте для этого задания action, который будет доступен через http, затем вы можете использовать ie. curl в unix 'crontab, чтобы вызвать это действие, и он попадет в первый доступный экземпляр.

Другая возможность ... с использованием Global объекта, чтобы запланировать задачу с помощью Akka поддержки. В этом случае, чтобы убедиться, что только один экземпляр будет планировать задачу, вам нужно как-то определить, какой именно. Если вы запускаете все 3 экземпляра с указанным портом (всегда один и тот же экземпляр), вы можете прочитать http.port, чтобы разрешить или пропустить выполнение.

Наконец, вы можете использовать базу данных для информирования других экземпляров, эта задача выполняется: все три экземпляра пытаются выполнить планировщик Akka, но перед выполнением задачи они могут проверить, имеет ли эта задача еще флаг TODO. Если нет, экземпляр устанавливает флаг TODO в false и продолжает выполнение, иначе просто пропускает выполнение на этот раз.

Также вы можете использовать файловую систему для аналогичного подхода: в начале выполнения создайте флаг-файл, чтобы сообщить другим экземплярам, ​​что на этот раз они могут пропустить задачу.

+0

Большое спасибо за информацию, но я уже подумал обо всех описанных вами методах. Мне было интересно, есть ли более чистый способ использовать внешний скрипт в Scala, который мог бы получить доступ ко всей среде Flash 2? – Play2Scala