【发布时间】:2020-10-19 21:20:58
【问题描述】:
我一直在我的 RoR 应用程序中使用 beaneater 进行后台处理。我正在使用 upstart 通过从我的 upstart srcipt 运行 rake 任务在后台运行 beaneater。
exec bundle exec rake RAILS_ENV=production bs:beaneater
我的 rake 任务是
task beaneater: :environment do
@beanstalk = BackgroundWorker.get_beanstalkd
asynch_tasks = BackgroundWorker.descendants
asynch_tasks.each do |aClass|
@beanstalk.jobs.register(aClass.tube_name) do |job|
aClass.process(job)
end
end
@beanstalk.jobs.process!
end
通过这种方式,我可以运行任意数量的后台进程,但是
- 如果需要,我无法自动生成新进程。
- rake 任务从暴发户中运行,在埋入任务后默默杀死 一些错误的情况。
- 一个可以查看详细信息的管理 UI 会很棒。
关于在生产环境中部署 beaneater 的任何建议。
【问题讨论】:
标签: ruby-on-rails deployment background-process production beanstalkd