gpt4 book ai didi

ruby-on-rails - rails : whenever + delayed_job to optimize rake tasks?

转载 作者:行者123 更新时间:2023-12-01 13:00:37 25 4
gpt4 key购买 nike

我一整天都使用whenever 来调用 rake 任务,但每个任务都会启动一个新的 Rails 环境。如何在不为每项工作重新启动 Rails 的情况下全天运行任务?

这是我想出的,想得到一些关于这个的反馈......?

  1. 重构每个 rake 任务,使其成为适当模型中的一个方法。

  2. 使用 delayed_job gem 分配低优先级并确保这些方法异步运行。

  3. 指示无论何时调用每个 Model.method 而不是调用 rake 任务

这个解决方案有意义吗?它是否有助于避免为每项工作启动新的 Rails 环境? .. 或者有更好的方法吗?

--

运行 Rails 3

最佳答案

您当然可以考虑通过 cron 对 delayed_jobs 进行排队,然后让一个长时间运行的 delayed_job worker。

然后您可以使用 whenever 来帮助您创建 delayed_job 排队方法。让 whenever 的 cron 输出调用一个小包装脚本可能是最简单的,它直接加载 active_record 和 delayed_job 而不是加载整个 rails 堆栈。 http://snippets.aktagon.com/snippets/257-How-to-use-ActiveRecord-without-Rails

您可能还想查看 clockwork.rb,这是一个长时间运行的进程,它会执行与您使用 cron 进行的相同操作(排队 delayed_jobs):http://rubydoc.info/gems/clockwork/0.2.3/frames

您也可以尝试在 delayed_jobs 中使用重新排队策略:https://gist.github.com/704047

关于ruby-on-rails - rails : whenever + delayed_job to optimize rake tasks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6231209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com