вторник, 16 августа 2011 г.

Предотвращение параллельного выполнения кода.

Привет.

Есть рельсовое приложение (3.1), которое взаимодействует со внешней системой - качает xml, парсит и сохраняет в своей базе. Делается это с определенной периодичностью, скажем раз в сутки. Внешняя система требует авторизации, причем у рельсового приложения нет своего логина/пароля для доступа к внешней системе, можно использовать только логин/пароль вошедшего в систему пользователя.

Таким образом, получается следующее:
1. Пользователь логинится в рельсовое приложение
2. Приложение, используя логин/пароль этого пользователя, стучится во внешнюю систему и берет, то что надо (естественно, если настало время для этого)

Во время того как приложение взаимодействует с внешней системой, мы должны заблокировать это приложение для всех пользователей, т.е. написать что-то типа "Идет обновление, зайдите позже". 

Собственно тут 2 вопрос:
1. Как заблокировать приложение? Хотя тут вроде очевидно - поставить флаг какой-нибудь и проверять нет ли в данный момент обновления, но вдруг есть более лучшие решения?
2. Сильно беспокоит вопрос о том, что будет если 2 или более пользователя залогинятся одновременно и таким образом запустится 2 или более процессов обновленя параллельно. Как избежать этого со 100% вероятностью?

Спасибо.


--
С уважением,
 Виталий Куреннов (mailto:vkurennov@gmail.com)

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
 
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

Комментариев нет:

Отправить комментарий