2010-04-22 3 views
1

В настоящее время я запускаю приложение Rails на Heroku, и все работает отлично, за исключением создания PDF-документов, которые иногда содержат тысячи записей. Heroku имеет встроенный тайм-аут в 30 секунд, поэтому, если запрос занимает более 30 секунд, он заброшен.Создание PDF в Delayed Job при использовании шаблона RESTful

Это нормально, поскольку они предлагают встроенную поддержку delayed_job. Тем не менее, все файлы PDF, которые я генерирую, следуют типичному спокойному шаблону. Например, запрос на «/posts.pdf» генерирует pdf (с использованием PRAWN и PRAWNTO), и он доставляется в браузер.

Итак, мой основной вопрос: как создать динамически созданный PDF-файл с задержкой_job при сохранении базовых шаблонов RESTful, которые так удобно предоставляет. Благодарю.

ответ

3

Вы могли бы сделать что-то вроде:

  1. Отправить запрос для генерации PDF: POST/generate_new_pdf
  2. есть, что действия возвращают идентификатор нового PDF, прежде чем он создал
  3. Опрос конечной точки этот идентификатор ресурса до тех пор, пока он не будет выполнен (возвращается 202 в то время): GET/pdfs /: id
+1

Хороший ответ (+1), но есть небольшая ошибка: ответ на POST должен вернуть 202 Принимается с помощью местоположение hea указывая на ресурс, подлежащий опросу. Затем я вернул 404 для GET/pdfs /: id до тех пор, пока PDF не будет существовать. –

+0

Делать вещи асинхронно - это хороший способ :) Может быть, он должен вернуть весь URL? – dzen