Можно ли запускать отложенные задания на Heroku бесплатно?
Я пытаюсь использовать delayed_job_active_record
на Heroku. Однако для этого требуется worker dyno
, и это стоило бы денег, если бы я включил этот dyno в течение полного времени.
Я подумал, что использовать Unicorn и заставить своих рабочих выполнять отложенные задания вместо рабочего Heroku, ничего не будет стоить, одновременно успешно выполняя все задания. Однако рабочие Unicorn, похоже, не начинают "работать" автоматически.
У меня есть следующее в моем Procfile.
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
worker: bundle exec rake jobs:work
и следующее в моем 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
Замедленные задания, похоже, работают, когда я масштабирую работника Heroku от 0 до 1. Опять же, невозможно ли использовать рабочих Unicorn вместо рабочего Heroku для выполнения отложенных заданий?
Нужно ли использовать драгоценный камень, например workless
, для запуска отложенных заданий на Heroku бесплатно? (ссылка)