Herokuで遅延ジョブを無料で実行することは可能ですか?
delayed_job_active_record
Herokuで使用しようとしています。ただし、これにはaが必要であり、worker dyno
このdynoをフルタイムでオンにするとコストがかかります。
Unicornを使用して、Herokuワーカーの代わりにそのワーカーに遅延ジョブを実行させると、すべてのジョブを正常に実行しながら、コストがかからないと思いました。ただし、ユニコーンの労働者は自動的に「作業」を開始しないようです。
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にスケーリングした場合にのみ機能するようです。繰り返しますが、Herokuワーカーの代わりにUnicornワーカーを使用して、遅延ジョブを実行することはできませんか?
workless
Herokuで遅延ジョブを無料で実行するようなgemを使用する必要がありますか?(参照)