我在Sidekiq工作人员中有以下方法:
def self.schedule_edits(course:, editing_user:, enrollment_results:)
puts editing_user.id
perform_async(course.id, editing_user.id, enrollment_results)
end我有一个控制器测试,当它调用此代码时,会引发以下警告:
WARN: Job arguments to MassEnrollmentWorker do not serialize to JSON safely. This will raise an error...我已经阅读了警告这里,我猜enrollment_results是一个令人反感的论点。但是,当我运行测试和输出enrollment_results时,我看到了以下内容:
{"FirstUser"=>{:success=>"User added to course."}, "SecondUser"=>{:success=>"User added to course."}, "NotARealUserOnWikipedia"=>{:failure=>"Not an existing user."}这似乎是一个有效的散列,那么问题是什么?
发布于 2022-03-02 17:16:58
注意有关符号的部分。
https://github.com/mperham/sidekiq/wiki/Best-Practices#1-make-your-job-parameters-small-and-simple
传递给perform_async的参数必须由简单的JSON数据类型组成:字符串、整数、浮点数、布尔值、null(零)、数组和哈希。这意味着你不能使用红宝石符号作为参数。
发布于 2022-03-02 19:10:12
为了子孙后代,我改变了哈希构建的方式,从而修正了这个问题:
{"FirstUser"=>{:success=>"User added to course."}, "SecondUser"=>{:success=>"User added to course."}, "NotARealUserOnWikipedia"=>{:failure=>"Not an existing user."}为了..。
{"FirstUser"=>{"success"=>"User added to course."}, "SecondUser"=>{"success"=>"User added to course."}, "NotARealUserOnWikipedia"=>{"failure"=>"Not an existing user."}发布于 2022-07-14 17:30:52
在我的情况下,我只需要将散列表的格式更改为字符串火箭=>样式。
发自:
Sidekiq::Client.push('class' => 'RecordOrderJob', 'args' => { foo: 'bar' })至:
Sidekiq::Client.push('class' => 'RecordOrderJob', 'args' => { 'foo' => 'bar' })只需避免散列中的符号。
https://stackoverflow.com/questions/71325322
复制相似问题