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
Это также предоставляет вам информацию о ловле / обработке ошибок.