Публикация данных из нескольких частей с помощью Ruby - PullRequest
0 голосов
/ 08 февраля 2011

Я создаю приложение rails, которое взаимодействует со сторонним API.

Когда пользователь загружает файл в rails, он должен быть перенаправлен на сторонний сайт через HTTP POST.

В некоторых случаях загрузка может занимать несколько сотен МБ.

В настоящее время я только что повторно отправлял сообщения в API, используя Net :: HTTP и получая доступ к объекту многоэлементной формы.вот так

@ tempfile = params [: video] [: file_upload] .tempfile

Хотя это слишком медленно и выглядит немного грязно.

Есть ли лучший способсделать это?

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

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

0 голосов
/ 08 февраля 2011

Раскрутите фоновое задание, используя DelayedJob.В отложенной работе вы можете попробовать rails redirect_to.

https://github.com/tobi/delayed_job

http://apidock.com/rails/ActionController/Base/redirect_to

...