如何在生产环境中调试崩溃的 SuckerPunch 作业

how to debug crashed SuckerPunch job in production

我正在尝试 运行 使用 SuckerPunch 的异步作业,它将一些数据发布到 REST API,并将响应写入数据库。在 rails CLI 和它正在运行的开发环境中。在生产中,当 API 响应错误时,它正在崩溃;当 API 以 200 或 201 响应时,它也能正常工作。由于我在所有测试中使用相同的代码和数据,我不明白,有什么不同可能导致这个问题。此外,日志没有提供足够的详细信息,我不知道如何进一步调试它。 很高兴得到你的两分钱。我将如何继续调试它?

QipJob.perform_async(params, data)  
ERROR -- : Sucker Punch job error for class: 'QipJob' args: [[[1075, ["xxx", "xxx", "10.174.212.145", "Router", "Static", "routed interface", "Always"]]], {:organization=>"xxx", :object_type=>"v4Object", :action=>"add", :overwrite=>nil}]

也许您可以通过向代码添加开始救援块来向您的代码添加一些额外的日志记录,例如:

 def perform(data)
   begin
     # your code
   rescue => e
     Rails.logger.error(e.message)
     Rails.logger.error(e.backtrace)
     raise e
   end
 end

然后您可以查看生产日志,也许(也许)回溯会引导您找到问题所在