2013-07-31 4 views
0

Недавно мы расширили приложение использовать несколько балансировку нагрузки серверов, и у меня есть вопрос, касающихся обработок вложений PAPERCLIP и, более конкретно, отложенная загрузка в S3Paperclip с несколькими серверами

Вот сценарий:

  • Приложение для iPhone добавляет новые данные в веб-приложение, включая загрузку фотографий.
  • Из соображений производительности, фото сначала хранится локально
  • Мы используем delayed_job для обработки и загрузки файла на S3

Вот соответствующий код:

has_attached_file :local 

has_attached_file :remote, :styles =>{:thumb =>'100x100'}, 
          :path => ":class/photos/:id_partition/:style.:extension", 
          :s3_credentials => "#{Rails.root}/config/amazon_s3.yml", 
          :storage => :s3 

after_save :update_remote 

def photo 
    remote_file_name ? remote : local 
end 

def photo=(attachment) 
    local = attachment 
end 

def update_remote 
    unless self.remote_file_name 
    if self.local.exists? 
     self.remote = self.local 
     self.local = nil 
     self.save 
    end 
    end 
end 

handle_asynchronously :update_remote

Мой вопрос, как расширить это на несколько серверов приложений? Локальный файл будет существовать только на одном из них, и я не хочу загружать его непосредственно на S3 из-за задержки.

ответ

0

Он точно не отвечает на вопрос, но я переключился на использование базы данных для «локального» вложения (до передачи на S3) вместо файловой системы, которая обошла проблему

Смежные вопросы