Rails-使用Sidekiq异步发送Email时报错总结

总结几个跟异步发邮件失败的原因:

  1. 修改应用/config目录下的文件后得重启服务器,代码才能生效。例如在/config/environments/development.rb修改了smtp配置。
  2. 修改跟Sidekiq的Worker后,要重启Sidekiq,代码才能生效。例如:修改了/app/workers/mail_worker.rb中的代码。
  • 只能传递基本参数给Worker,如:不能直接传送Model对象给Worker,只能传递id,然后在Worker中再创建Model对象。否则Sidekiq会报错,可以在Sidekiq控制台观察,一个任务Start后没有Done。
  1. smtp服务对发邮件次数有限制,如:我用网易邮件1天发送了40条邮件后就无法发送了。短时间内使用新浪发送同样信息的邮件时会发不出去。

如何判断是哪个因素导致的:

  1. smtp服务是否可以正常使用?
    可以在控制台发送Email,见StackOverflow: Send email from rails console
  • 有无执行异步任务?
    在控制台观察Sidekiq执行该任务后有没有停止

领悟:

出问题时得把逻辑拆分开来,分别检测,不然容易解决这边的问题,那边又出问题。

你可能感兴趣的:(Rails-使用Sidekiq异步发送Email时报错总结)