ruby-on-rails - 免费在 Heroku 上运行延迟作业

标签 ruby-on-rails heroku delayed-job

是否可以免费在 Heroku 上运行延迟作业?

我正在尝试使用 delayed_job_active_record在 Heroku 上。但是,它需要 worker dyno如果我全时打开这个测功机,那会花钱。

我认为使用 Unicorn 并让其工作人员运行延迟的工作而不是 Heroku 工作人员,在成功运行所有工作的同时不会花费任何成本。然而, unicorn worker 似乎不会自动开始“工作”。

我的 中有以下内容文件 .

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 worker 代替 Heroku worker 来做延迟的工作吗?

我必须使用像 workless 这样的 gem 吗?免费在 Heroku 上运行延迟作业? (reference)

最佳答案

像这样拆分过程可能会产生问题 - 你最好的选择是不要尝试让它“免费”,而是使用像 http://hirefireapp.com/ 这样的东西。当有工作要执行时,它将启动一个工作人员,从而显着降低成本,而不是 24x7 运行一个工作人员。

另请注意,Heroku 只会为您自动启动“网络”进程,启动其他命名进程是一项手动任务。

关于ruby-on-rails - 免费在 Heroku 上运行延迟作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15196833/

相关文章:

ruby-on-rails - 无法找到 Rails/Heroku : "The page you were looking for doesn' t exist"的解决方案

heroku - 当另一个域指向它时如何在 heroku 上的应用程序中指定规范链接

ruby-on-rails - Delayed::Job 任务未执行且在运行时未从队列中清除

ruby-on-rails - 我怎样才能为这个自定义方法做一个延迟的工作?

ruby-on-rails - Heroku 上的延迟作业与 RabbitMQ 有何优缺点?

ruby-on-rails - render_to_string 找不到部分(PDFKit Controller 响应)

ruby-on-rails - Django、Ruby on Rails、Google App Engine 等之间有什么区别?

ruby-on-rails - 具有 join_table 和 has_many 的模型的路由错误 :through in RailsAdmin

javascript - 可以在条形图中合并 2 个条形图 (chart.js)

ios - Heroku:运行我的应用程序的成本有多高?