Недавно мы расширили приложение использовать несколько балансировку нагрузки серверов, и у меня есть вопрос, касающихся обработок вложений 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 из-за задержки.