Прямая загрузка PDF на S3 и разделение PDF на один JPG на страницу в фоновом режиме - PullRequest
0 голосов
/ 12 декабря 2011

Итак, у меня есть некоторый рабочий код, который загружает pdf в s3 с помощью скрепки ( здесь ).Код разбивает PDF-файл на jpg / страницу и загружает каждый из них на s3.

Этот код не работает на Heroku для больших файлов (мне, вероятно, нужно только до 10 МБ файлов), так как у heroku естьТайм-аут 30 секунд.

У меня сложилось впечатление, что простое помещение загрузки в фоновый процесс (gem delayed_paperclip?) Все равно приведет к тайм-ауту, и что мне нужно фактически загрузить файл непосредственно в s3,Я видел, что могу сделать это с помощью гема carrierwave_direct .

Итак, теперь проблема в том, как заставить следующий код:

def make_manual_pages
  if valid?
    Paperclip.run('convert', "-quality #{ManualPage::QUALITY} -density #{ManualPage::DENSITY} #{manual.url} #{manual.url}%d.png")
    images = Dir.glob("#{set_ups.url}*.png").sort_by do |line|
      line.match(/(\d+)\.png$/)[1].to_i
    end

    images.each do |page_image|
      manual_pages.build(:image => File.open(page_image))
    end
    FileUtils.rm images
  end
end

работать с carrierwave_direct.

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

1 Ответ

1 голос
/ 14 августа 2012

Преимущество и проблема с carrierwave_direct в том, что ваш файл хранится только на s3 и s3. Carrierwave_direct имеет некоторые функции для обработки файлов, загруженных на s3, но все они сначала загружают файл на ваш сервер, обрабатывают его, а затем повторно загружают на s3, чтобы вся обработка выполнялась на вашем хосте.

Если вам нужно выполнить какую-то обработку, подобную той, которую вы выполняете, carrierwave_direct вам в этом не поможет.

Одним из решений было бы создание виртуальной машины на Amazon только для обработки ваших файлов. Я не уверен, как оплачивается перевод между s3 и ec2, но это будет не больше, чем перевод обратно в heroku.

...