Rails - запустить толкателя в фоновом режиме

Я использую Pusher в своем приложении Rails-4.

Проблема в том, что иногда соединение медленное, поэтому выполнение кода замедляется.
Я также время от времени получаю следующую ошибку:

Pusher::HTTPError: execution expired (HTTPClient::ConnectTimeoutError)

Я посылаю сигналы через Pusher с этим кодом:

Pusher[channel].trigger!(event, msg)

Я хотел бы выполнить его в фоновом режиме, поэтому, если будет сгенерировано исключение, оно не нарушит поток моего приложения и не замедлит его.
Я пытался обернуть звонок с begin ... rescue но это не решило проблему исключений. Конечно, даже если бы это было так, это не решило бы проблему замедления, которую я хочу избежать.

2 ответа

Наконец я реализовал это решение:

Thread.new do
  begin
    Pusher[channel].trigger!(ch, ev, msg)
    ActiveRecord::Base.connection.close
  rescue Pusher::Error => e
    Rails.logger.error "Pusher error: #{e.message}"
  end
end

Информацию о выполнении асинхронных триггеров можно найти здесь: https://github.com/pusher/pusher-gem

Это также предоставляет вам информацию о ловле / обработке ошибок.

Другие вопросы по тегам