gpt4 book ai didi

ruby-on-rails - 使用Redis跟踪工作进度

转载 作者:可可西里 更新时间:2023-11-01 11:47:46 26 4
gpt4 key购买 nike

使用轨道6。我有一个很长时间的sidekiq工人,这可能需要4-6个小时,这取决于它的负荷给定。但如果进程由于错误或每日重新启动而停止,我最终会失去迄今为止所取得的进展。我一直在尝试实现一个好的缓存机制,因为它基本上是一个大循环,如果在停止执行时有循环的值,我可以跟踪并恢复。在我只将循环值保存在变量中之前,在说200次更新之后,将其传输到postgres数据库。注意:每个循环迭代平均需要半秒。但是,如果在200次迭代之间停止执行,我仍然可能最终失去跟踪。我想跟踪每一次迭代。我应该使用redis来缓存循环迭代器以防止丢失跟踪吗?我可以使用异常处理捕获任何错误,并更新pg中的迭代器值。但是dyno restart/update发出的sigterm信号可以被捕获吗?还是我应该依赖redis?也许更好的办法?

最佳答案

任务是什么样的?我记得有一个类似的场景,我们曾经在数百万条记录上迭代,操作也遇到了类似的问题。有一种方法对我们有很大帮助,那就是将运行时间极长的作业拆分成许多子作业,类似于下面概述的步骤。
分批获取记录并将一批记录和批号作为参数传递给sidekiq作业
在redis中写入批的开始和结束id及其状态,以跟踪特定批的故障。
使用上述参数启动子sidekiq作业,并在其中执行所需的任务。如果成功退出,则更新每个批的状态。
另外,如果作业的时间安排无法确保在相对较短的时间内完成,并且重新启动迫在眉睫(由于部署或任何其他原因),您可以查看sidekiq enterprise,它支持滚动重新启动,sidekiq将根据需要等待较长时间。要完成的任务。

关于ruby-on-rails - 使用Redis跟踪工作进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57252116/

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