Có thể chạy các công việc bị trì hoãn trên Heroku miễn phí không?Chạy các công việc bị trì hoãn trên Heroku miễn phí
Tôi đang cố gắng sử dụng delayed_job_active_record
trên Heroku. Tuy nhiên, nó đòi hỏi một worker dyno
và nó sẽ chi phí tiền nếu tôi bật dyno này cho toàn thời gian.
Tôi nghĩ sử dụng Unicorn và làm cho nhân viên của mình chạy các công việc bị trì hoãn thay vì nhân viên Heroku, sẽ không mất phí, trong khi chạy thành công tất cả các công việc. Tuy nhiên, công nhân Unicorn dường như không bắt đầu "làm việc" tự động.
Tôi có thông tin sau trong số Procfile.
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
worker: bundle exec rake jobs:work
và sau đây trong tôi 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
công việc bị trì hoãn chỉ dường như hoạt động khi tôi mở rộng người lao động Heroku từ 0 đến 1. Một lần nữa, là nó không thể sử dụng Unicorn công nhân thay vì Heroku công nhân để làm công việc bị trì hoãn?
Tôi có phải sử dụng đá quý như workless
để chạy các công việc bị trì hoãn trên Heroku miễn phí không? (reference)
Tôi sử dụng đá quý không làm việc. Sẽ không có vấn đề gì khi sử dụng đá quý để giúp nhân viên chỉ cháy khi cần thiết. Nó hoạt động một viên ngọc! ;-) – mjnissim