как обслуживать уникальные предметы из базы данных через рельсы по каждому запросу - PullRequest
1 голос
/ 31 марта 2012

Я работаю на «главном» сервере вместе с 4 «ведомыми».

Хозяин - это http, на котором запущен сервер приложений rails, а ведомые - это экземпляры ec2, выполняющие скрипт.* Ведомые устройства отправляют http-запрос мастеру, на который мастер отвечает json-запросом элемента в базе данных. До того, как запрос будет обработан, мастер должен установить для поля с именем -sent- значение "ИСТИНА" , чтобы элемент больше не обслуживался.

Шаги:

  • Запрос на получение.
  • Поиск элемента из базы данных.
  • В поле отправлено в значение true.
  • Отправка JSON обратно из элемента базы данных.

Проблема

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


class Places < ActiveRecord::Base

def sentout
   self.update_attributes(:sent => "True")
end

def self.worker
   @a = Places.select("id,address,city").where("sent is null").first
   @a.sentout
   return @a.to_json
end

end

С точки зрения, это то, что происходит:

  def index
     @a = Places.worker
     render :json => @a
  end

В соответствии с этим, независимо от того, сколько рабов у меня запрашивают данные для обработки, это должно составлять УНИКАЛЬНЫЕ данные (отправленное поле равно ""), но я вижу одни и те же элементы в выходных данных 2 сценариев, что означает, что иногда подчиненные машины в конечном итоге обрабатывают одну и ту же вещь дважды.

Этоправильный подход к этой проблеме?Я новичок в этом и пытаюсь использовать наиболее логичный подход.

Буду признателен за любую помощь, которую я пытаюсь решить самостоятельно.

1 Ответ

0 голосов
/ 31 марта 2012

Следующее вернет true, но не обновит атрибут статуса.

Place.update_attributes(:sent => 'True')

Если вы хотите обновить атрибут статуса, вы должны назначить его отдельно.

Place.sent = 'True'
save
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...