У меня проблема с Threads в рельсах 4.
Я хочу открыть метод в новом потоке, который не использует ActiveRecord.
Метод просто спит в течение нескольких минут, а затем просто запускает запрос.
Все работает нормально, но иногда некоторые из этих потоков запускаются после сна. Его в основном, когда спам, как 20 из них, но иногда его, когда их мало. И в 3-м случае, даже когда я спам их, все в порядке. Я пробовал с выводами в потоках перед сном и после, и до того, как всегда выводится сообщение сна, что означает, что поток есть, но после сна этого не происходит в тех случаях, когда не удается отправить запрос POST.
sth = "array of ActiveRecord objects, like 10 max"
sth.each do |s|
..some active record create new object..unrelated..
Thread.new { custom_method(s.id) }
end
def custom_method(id)
Rails.logger.info "BEFORE SLEEP FOR #{id}"
sleep(180)
Thread.current.run # this is something that I just tried if it will help
..call post method to send "id" to some route, nothing special...
Thread.current.exit # also added to see if it will help
end
Таким образом, в основном, каждый раз перед тем, как выводится сообщение журнала сна, но после него нет, и этот запрос POST не запускается в этих случаях. Есть идеи, почему это происходит так случайно?
Спасибо