Jeśli masz Unicorn ustawiony na jednym dyno na Heroku, powiedz z 3 pracownikami. Czy 2 osoby pracujące z dziećmi mogą przetwarzać żądania internetowe, a 1 dziecko jednorożca wykonuje zadania w tle, takie jak kolejka resque lub zaplanowane zadania?Czy jest możliwe, aby jedno dziecko Unicorn przetworzyło kolejkę, podczas gdy pozostałe przetwarzają żądania sieciowe na pojedynczym strumieniu Heroku?
Czy to nie jest właściwe?
Teraz to działa!
OK, więc używając odpowiedzi poniżej udało mi się ją odebrać, ale najpierw trzeba było odrobinę majsterkować. To właśnie dla mnie zadziałało.
Procfile
web: bundle exec unicorn_rails -p $PORT -c config/unicorn.rb
unicorn.rb
worker_processes 2
preload_app true
timeout 30
@resque_pid = nil
before_fork do |server, worker|
@resque_pid ||= spawn("bundle exec rake environment resque:work QUEUE=*")
end
after_fork do |server, worker|
ActiveRecord::Base.establish_connection
end
Tak, pracowałem przez samouczek dotyczący bugsplata zeszłej nocy, ale nie mogłem go odebrać w kolejce ... – nverba
Co do odpowiedniego, po prostu nie byłem pewien, czy każdy rozwidlony proces musiałby być podobny dla każdego mistrz jednorożca. Nie sądzę, że heroku ma jakiekolwiek zastrzeżenia do jednorożca, odnoszą się do niego kilkakrotnie w swojej dokumentacji. W końcu to tylko 1 Dyno. Z większym prawdopodobieństwem sprzeciwi się celowemu klonowaniu aplikacji za pomocą współdzielonej bazy danych, aby obejść ich zasady, ponieważ może się zdarzyć, że kilka dynamów zostanie przywiązanych do 1 bezpłatnej aplikacji. – nverba
również widocznie dyno może odradzać się do 15 wątków - ale musisz uważać na użycie pamięci. –