Как я могу синхронизировать несколько рабочих Workling? - PullRequest
1 голос
/ 19 апреля 2010

У меня следующая ситуация:

  • Три задачи: A, B, C (реализовано как рабочие)
  • Два пользовательских события (вызовы метода контроллера)

Задачи запускаются следующим образом:

  1. Первое пользовательское событие вызывает Задачу A и Задачу B.
  2. Тогда необязательное пользовательское событие может вызвать задачу C, но эта задача не должна выполняться, пока не будут выполнены задачи A и B.

Как я могу применить эту цепочку событий?

Одним из способов будет выполнение Задач A и B в начале Задачи C, но пользовательское событие, инициирующее Задачу C, может никогда не произойти, но Задачи A и B, тем не менее, должны выполняться.

В "нормальной" программе у меня был бы целый арсенал объектов синхронизации (мьютексы, семафоры, критические секции, ...). Но что я могу сделать здесь?

(Если это имеет значение, приложение Rails будет работать на сервере Linux, и Workling настроен на использование Starling)

1 Ответ

1 голос
/ 29 сентября 2011

Вы можете использовать распределенную блокировку:

http://github.com/tanin47/ruby_redis_lock (который мой)

Однако требуется Redis.

Или вы можете самостоятельно создать библиотеку блокировок с другими базами данных, например, MySQL.

...