Ruby on rails 设计赢得';当unicorn worker_进程为1时,不发送电子邮件

Ruby on rails 设计赢得';当unicorn worker_进程为1时,不发送电子邮件,ruby-on-rails,devise,unicorn,Ruby On Rails,Devise,Unicorn,这是unicorn.rb的开始 worker_processes 1 timeout Integer 25 preload_app true ... 通过这些设置,当我尝试使用Desive重置密码时,我会在日志中看到这一点(为安全起见稍微编辑): 注意最后一行。独角兽超时,必须重新启动!(为什么?) 其他发送电子邮件的流程也可以正常工作。似乎只有设计受到影响 经过数小时的调试,我最终确定,如果我将unicorn更改为使用两个或多个worker_进程,问题就会消失: Started POST "

这是unicorn.rb的开始

worker_processes 1
timeout Integer 25
preload_app true
...
通过这些设置,当我尝试使用Desive重置密码时,我会在日志中看到这一点(为安全起见稍微编辑):

注意最后一行。独角兽超时,必须重新启动!(为什么?)

其他发送电子邮件的流程也可以正常工作。似乎只有设计受到影响

经过数小时的调试,我最终确定,如果我将unicorn更改为使用两个或多个worker_进程,问题就会消失:

Started POST "/password" for 127.0.0.1 at 2015-06-02 14:21:05 -0700
Processing by Devise::PasswordsController#create as 
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"(removed)", "user"=>{"email"=>"(removed)@(removed).com"}, "button"=>""}

  Rendered users/mailer/reset_password_instructions.html.slim within layouts/email (6.9ms)

Devise::Mailer#reset_password_instructions: processed outbound mail in 164.2ms

Sent mail to (removed)@(removed).com (878.1ms)

Redirected to http://localhost:5000/sign-in
Completed 302 Found in 1405ms (ActiveRecord: 24.2ms)
127.0.0.1 POST /password 302 Found Devise::PasswordsController#create HTML 1405.4 (DB 24.2, View 0.0) {"utf8"=>"✓", "authenticity_token"=>"(removed)", "user"=>{"email"=>"(removed)@(removed).com"}, "button"=>""} {} body: 

Started GET "/sign-in" for 127.0.0.1 at 2015-06-02 14:21:07 -0700
Processing by Devise::SessionsController#new as 
  Rendered users/shared/_links.slim (0.7ms)
  Rendered users/sessions/new.html.slim within layouts/application (3.3ms)
  Rendered shared/_flash.html.slim (0.5ms)
  Rendered global/_header.html.slim (1.4ms)
  Rendered global/_footer.html.slim (0.5ms)
  Rendered shared/_airbrake.html.slim (0.6ms)
  Rendered shared/_notifier.html.slim (0.4ms)
Completed 200 OK in 31ms (Views: 30.2ms | ActiveRecord: 0.0ms)
成功!(怎么做?)

为什么我必须运行2+unicorn web workers才能使Desive正常工作?当我们只有一个unicorn实例时,我需要修复什么才能使Desive正常工作

谢谢你的帮助

更新:我也在Desive issue tracker上询问了这个问题:-我们将先看看哪个地点解决了这个问题:)

Github用户对Desive issue tracker上的,在一些对话之后,我们发现我们用来在电子邮件模板中加载样式表的样式表链接标记方法导致了这个问题,它通过某种方式向我们的web服务器(正忙着发送电子邮件)进行web调用,这导致了整件事情锁定并死亡

同时,在stack overflow上,只有18个人看到了这个问题。哦,好吧。希望这项调查有一天能对其他人有所帮助。

Github用户回应了Desive issue tracker上的问题,经过一些对话后,我们发现我们用于在电子邮件模板中加载样式表的样式表链接标记方法通过某种方式对我们的web服务器进行web调用而导致了这个问题(当时正忙着发送电子邮件)这导致了整件事被锁死

同时,在堆栈溢出上,只有18个人看到了这个问题。哦,好吧。希望这项调查有一天能帮助其他人

Started POST "/password" for 127.0.0.1 at 2015-06-02 14:21:05 -0700
Processing by Devise::PasswordsController#create as 
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"(removed)", "user"=>{"email"=>"(removed)@(removed).com"}, "button"=>""}

  Rendered users/mailer/reset_password_instructions.html.slim within layouts/email (6.9ms)

Devise::Mailer#reset_password_instructions: processed outbound mail in 164.2ms

Sent mail to (removed)@(removed).com (878.1ms)

Redirected to http://localhost:5000/sign-in
Completed 302 Found in 1405ms (ActiveRecord: 24.2ms)
127.0.0.1 POST /password 302 Found Devise::PasswordsController#create HTML 1405.4 (DB 24.2, View 0.0) {"utf8"=>"✓", "authenticity_token"=>"(removed)", "user"=>{"email"=>"(removed)@(removed).com"}, "button"=>""} {} body: 

Started GET "/sign-in" for 127.0.0.1 at 2015-06-02 14:21:07 -0700
Processing by Devise::SessionsController#new as 
  Rendered users/shared/_links.slim (0.7ms)
  Rendered users/sessions/new.html.slim within layouts/application (3.3ms)
  Rendered shared/_flash.html.slim (0.5ms)
  Rendered global/_header.html.slim (1.4ms)
  Rendered global/_footer.html.slim (0.5ms)
  Rendered shared/_airbrake.html.slim (0.6ms)
  Rendered shared/_notifier.html.slim (0.4ms)
Completed 200 OK in 31ms (Views: 30.2ms | ActiveRecord: 0.0ms)