Ruby 一个奇葩的问题

peterparker · 2023年04月15日 · 最后由 as181920 回复于 2023年04月18日 · 576 次阅读

我有一个查询语句,要轮询查询很久,1.2w 数据,大概 5 分钟吧(因为表结构比较复杂,涉及到的表比较多,而且查询出来的数据要进行处理,因此无法直接连接查询),奇葩的点在哪里呢? 我在接口中直接 Thread.new 创建了一个线程,在异步线程中执行的查询方法,数据是固定的,有时候查询成功,有时候就查询失败,而且失败的原因还是因为不同的数据...很奇怪,因为数据是固定的,按理应该要么全部都是成功的,要么全部都是失败的,为什么接口,有时成功,有时失败?我将这个查询方法,放到 sidekiq 队列中执行,就不会有这么奇葩的问题

ps:另外分享一个自己今天踩的坑,我将 Hash 类型的变量传入到 sidekiq 异步方法时,原本 key 是 Symbol 类型的,结果会自己给我转换成 String 类型

sidekiq 的参数是转成 JSON 存储在 redis 中的,json 标准里没有 symbol 类型

升级 Sidekiq 7,然后你会发现传 symbol 会直接报错(印象中……)

IChou 回复

这是直接用 sidekiq(include Sidekiq::Job)会发生的问题,

还是基于 ActiveJob 使用也会发生的问题?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号