Ist es möglich, verzögerte Jobs auf Heroku kostenlos auszuführen?Verspätete Jobs auf Heroku kostenlos laufen lassen
Ich versuche delayed_job_active_record
auf Heroku zu verwenden. Allerdings erfordert es eine worker dyno
und es würde Geld kosten, wenn ich diesen Prüfstand für die volle Zeit eingeschaltet würde.
Ich dachte mit Unicorn und machen seine Mitarbeiter verzögerte Jobs statt der Heroku Arbeiter, würde nichts kosten, während alle Jobs erfolgreich ausgeführt werden. Unicorn-Arbeiter scheinen jedoch nicht automatisch zu "arbeiten".
Ich habe folgendes in meinem Procfile.
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
worker: bundle exec rake jobs:work
und folgende Unterlagen in meinem unicorn.rb
worker_processes 3
timeout 30
preload_app true
before_fork do |server, worker|
# Replace with MongoDB or whatever
if defined?(ActiveRecord::Base)
ActiveRecord::Base.connection.disconnect!
Rails.logger.info('Disconnected from ActiveRecord')
end
# If you are using Redis but not Resque, change this
if defined?(Resque)
Resque.redis.quit
Rails.logger.info('Disconnected from Redis')
end
sleep 1
end
after_fork do |server, worker|
# Replace with MongoDB or whatever
if defined?(ActiveRecord::Base)
ActiveRecord::Base.establish_connection
Rails.logger.info('Connected to ActiveRecord')
end
# If you are using Redis but not Resque, change this
if defined?(Resque)
Resque.redis = ENV['REDIS_URI']
Rails.logger.info('Connected to Redis')
end
end
Verzögerte Arbeitsplätze scheinen nur zu arbeiten, wenn ich die Heroku Arbeiter von 0 bis 1 Wieder skalieren, ist es nicht möglich zu verwenden, Einhornarbeiter anstelle von Heroku-Arbeiter, um die verzögerten Jobs zu machen?
Muss ich ein Juwel wie workless
verwenden, um verzögerte Jobs auf Heroku kostenlos auszuführen? (reference)
Ich benutze arbeitslose Edelstein. Es sollte kein Problem geben, einen Edelstein zu benutzen, um einen Arbeiter nur dann zu feuern, wenn er gebraucht wird. Es funktioniert ein Juwel! ;-) – mjnissim