gpt4 book ai didi

ruby-on-rails - Ruby 长时间运行的进程对队列事件使用react

转载 作者:数据小太阳 更新时间:2023-10-29 07:11:21 26 4
gpt4 key购买 nike

我有一个将某些事件写入队列的 Rails 3 应用。

现在我想在服务器上创建一个服务,每 x 秒轮询一次队列,并按计划执行其他任务。

除了创建 ruby​​ 脚本并通过 cron 作业运行它之外,还有其他稳定的替代方案吗?

最佳答案

尽管启动基于 Rails 的持久任务是一种选择,但您可能希望查看更有序的系统,例如 delayed_jobStarling管理您的工作量。

我建议不要在 cron 中运行某些东西,因为启动整个 Rails 堆栈的开销可能很大。每隔几秒运行一次它是不切实际的,因为 Rails 上的启动时间通常为 5-15 秒,具体取决于您的硬件。不过,每天这样做几次通常没什么大不了的。

一个简单的替代方法是在脚本中创建一个工作循环,您可以使用 runner:

interval = 15.minutes
next_time = Time.now + interval

while (true)
if (stuff_to_do?)
do_stuff
end

# Figure out how much time is left before the next iteration
delay = next_time.to_i - Time.now.to_i

if (delay > 0)
# If ahead of schedule, take a break
sleep(delay)
end
end

这样做的缺点是,只要此后台进程在运行,Rails 堆栈就会保留在内存中,但这是巨大的 CPU 命中率和内存命中率之间的权衡。

关于ruby-on-rails - Ruby 长时间运行的进程对队列事件使用react,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4891606/

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