Каков наилучший способ сделать асинхронный push на внешний веб-сервис из приложения Rails?

Когда пользователь отправляет комментарий в мое приложение Rails, я хочу, чтобы комментарий был перенесен на внешнюю веб-службу. Этот внешний веб-сервис может быть медленным, поэтому я хочу сделать это нажатием асинхронно. Меня не интересует ответ веб-службы.

0
nl ja de

1 ответы

Лучший способ использования очереди задач и рабочего фона.

Например, посмотрите Sidekiq . Или BackgroundJob . Или Resque .

В основном, в вашем приложении rails вы говорите: «Я хочу, чтобы это было вызвано в фоновом режиме» и поставили задачу в очередь (при поддержке /MySQL //без разницы). Затем другой процесс (фоновый рабочий) извлекает задачи из очереди и выполняет их.

Для быстрого и грязного решения вы можете использовать потоки:

Thread.new do
  # this stuff will be executed asynchronously
end

Но это подходит только для очень маленьких приложений. Не используйте это при большой нагрузке.

1
добавлено
Обычно рельсы обслуживаются длительным процессом. Это означает, что процесс (и его потоки) далеко переживает любой индивидуальный запрос.
добавлено автор Sergio Tulentsev, источник
Благодарю. Я уже экспериментирую с Resque. Но если я создаю поток, разве он не будет убит, когда запрос, который породил его, заканчивается?
добавлено автор unnitallman, источник
ОК. Я иду с Реске.
добавлено автор unnitallman, источник
pro.ruby
pro.ruby
1 181 участник(ов)

Язык программирования Ruby Additional docs: https://rubyreferences.github.io/rubyref/ Invite: https://telegram.me/joinchat/Be4rsT2NuB3CyJaF26j1kA Кто хочет компилировать: @crystal_ru (его синтаксис основан на Ruby) Участник @proDOT

Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

Ruby School .us
Ruby School .us
1 045 участник(ов)

Чат-болталка для учеников руби-школы и не только. Правила: https://telegra.ph/Pravila-chata-Rubi-shkoly-03-13

Random Ruby Chat
Random Ruby Chat
589 участник(ов)

Правила публикации вакансий: https://t.me/codenamecrud/60865

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Ruby Talks
Ruby Talks
236 участник(ов)

Национальная Флеймотека

RubyRush
RubyRush
189 участник(ов)

rubyrush.ru программирование для самых новичков

Rails Chat
Rails Chat
87 участник(ов)

You are welcome to discuss Ruby On Rails development process and other stuff