ActionMailer“ Net :: ReadTimeout”当使用带有Rackspace的延迟作业“ emailsrvr.com”时, [英] ActionMailer "Net::ReadTimeout" when using Delayed Job with Rackspace "emailsrvr.com"

查看:92
本文介绍了ActionMailer“ Net :: ReadTimeout”当使用带有Rackspace的延迟作业“ emailsrvr.com”时,的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

编辑:我正在使用Rails 3.2.17和Ruby 2.0.0p0

I'm using Rails 3.2.17 and Ruby 2.0.0p0

<$>我遇到了一些问题c $ c> ActionMailer 发送邮件超时;请参见 ActionMailer超时

I've been having some issues with ActionMailer timing out on sending mail; See ActionMailer Timing out

将默认的 Unicorn 超时时间增加到2分钟(用于测试)后,它会在45秒内完成。我认为处理此问题的最佳方法是使用 Delayed Job ,但是,当DJ运行 deliver 方法时,也超时。下面的堆栈跟踪。

After increasing the default Unicorn timeout to 2min (for testing) It completes in about 45 sec. I thought the best way to handle this would be to use Delayed Job, however, when DJ runs the deliver method it's timing out too. Stack trace below.

DJ是工作的正确工具吗?我是否需要增加DJ的超时时间(我认为我已阅读默认值6小时)?任何建议都会有所帮助。

Is DJ the right tool for the job? Do I need to increase the timeout for DJ (I thought that I had read the default was 6 hours)? Any advice would be helpful.

DJ呼叫:

NotificationsMailer.delay.access_granted(self).deliver

Stacktrace:

[Worker(host:myhost.local pid:37598)] Job Class#access_granted (id=20) FAILED (3 prior attempts) with Net::ReadTimeout: Net::ReadTimeout
   (0.3ms)  BEGIN
   (1.0ms)  UPDATE "delayed_jobs" SET "last_error" = 'Net::ReadTimeout
/Users/user/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:158:in `rescue in rbuf_fill''
/Users/user/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:152:in `rbuf_fill''
/Users/user/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:134:in `readuntil''
/Users/user/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:144:in `readline''
/Users/user/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:931:in `recv_response''
/Users/user/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:554:in `block in do_start''
/Users/user/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:941:in `critical''
/Users/user/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:554:in `do_start''
/Users/user/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:519:in `start''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/mail-2.5.4/lib/mail/network/delivery_methods/smtp.rb:112:in `deliver!''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/mail-2.5.4/lib/mail/message.rb:2129:in `do_delivery''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/mail-2.5.4/lib/mail/message.rb:232:in `block in deliver''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/actionmailer-3.2.17/lib/action_mailer/base.rb:415:in `block in deliver_mail''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/activesupport-3.2.17/lib/active_support/notifications.rb:123:in `block in instrument''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/activesupport-3.2.17/lib/active_support/notifications/instrumenter.rb:20:in `instrument''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/activesupport-3.2.17/lib/active_support/notifications.rb:123:in `instrument''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/actionmailer-3.2.17/lib/action_mailer/base.rb:413:in `deliver_mail''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/mail-2.5.4/lib/mail/message.rb:232:in `deliver''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/performable_mailer.rb:6:in `perform''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/backend/base.rb:105:in `block in invoke_job''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:60:in `call''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:60:in `block in initialize''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:65:in `call''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:65:in `execute''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:38:in `run_callbacks''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/backend/base.rb:102:in `invoke_job''
(eval):3:in `block in invoke_job_with_newrelic_transaction_trace''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/newrelic_rpm-3.7.2.195/lib/new_relic/agent/instrumentation/controller_instrumentation.rb:339:in `perform_action_with_newrelic_trace''
(eval):2:in `invoke_job_with_newrelic_transaction_trace''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/worker.rb:206:in `block (2 levels) in run''
/Users/user/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/timeout.rb:65:in `timeout''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/worker.rb:206:in `block in run''
/Users/user/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/benchmark.rb:296:in `realtime''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/worker.rb:205:in `run''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/worker.rb:267:in `block in reserve_and_run_one_job''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:60:in `call''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:60:in `block in initialize''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:65:in `call''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:65:in `execute''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:38:in `run_callbacks''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/worker.rb:267:in `reserve_and_run_one_job''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/worker.rb:189:in `block in work_off''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/worker.rb:188:in `times''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/worker.rb:188:in `work_off''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/worker.rb:153:in `block (4 levels) in start''
/Users/user/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/benchmark.rb:296:in `realtime''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/worker.rb:152:in `block (3 levels) in start''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:60:in `call''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:60:in `block in initialize''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:65:in `call''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:65:in `execute''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:38:in `run_callbacks''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/worker.rb:151:in `block (2 levels) in start''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/worker.rb:150:in `loop''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/worker.rb:150:in `block in start''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/plugins/clear_locks.rb:7:in `call''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/plugins/clear_locks.rb:7:in `block (2 levels) in <class:ClearLocks>''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:78:in `call''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:78:in `block (2 levels) in add''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:60:in `call''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:60:in `block in initialize''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:78:in `call''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:78:in `block in add''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:65:in `call''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:65:in `execute''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/lifecycle.rb:38:in `run_callbacks''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/worker.rb:149:in `start''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/delayed_job-4.0.0/lib/delayed/tasks.rb:9:in `block (2 levels) in <top (required)>''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/task.rb:236:in `call''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/task.rb:236:in `block in execute''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/task.rb:231:in `each''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/task.rb:231:in `execute''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/task.rb:175:in `block in invoke_with_call_chain''
/Users/user/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/task.rb:168:in `invoke_with_call_chain''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/task.rb:161:in `invoke''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/application.rb:149:in `invoke_task''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/application.rb:106:in `block (2 levels) in top_level''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/application.rb:106:in `each''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/application.rb:106:in `block in top_level''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/application.rb:115:in `run_with_threads''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/application.rb:100:in `top_level''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/application.rb:78:in `block in run''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/application.rb:165:in `standard_exception_handling''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/lib/rake/application.rb:75:in `run''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/gems/rake-10.1.1/bin/rake:33:in `<top (required)>''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/bin/rake:23:in `load''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/bin/rake:23:in `<main>''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/bin/ruby_noexec_wrapper:14:in `eval''
/Users/user/.rvm/gems/ruby-2.0.0-p0@mysite/bin/ruby_noexec_wrapper:14:in `<main>''', "attempts" = 4, "run_at" = '2014-03-27 21:35:41.779268', "locked_at" = NULL, "locked_by" = NULL, "updated_at" = '2014-03-27 21:31:20.783344' WHERE "delayed_jobs"."id" = 20


推荐答案

数十种不同的配置,这些配置终于可以使用了:

After trying dozens of different configs this is the one that finally worked:

config.action_mailer.smtp_settings = {
  address:              "secure.emailsrvr.com",
  port:                 465,
  domain:               "myapp.net",
  authentication:       :login,
  tls:                  true,
  user_name:            "no-reply@myapp.net",
  password:             "PASSWORD"
}

另外,在我的 Mailer 类,我必须确保将默认的 from 设置为与 user_name 相同的地址code>以上。

Additionally, in my Mailerclass, I had to make sure the default from was set to the same address as the user_name above.

编辑
需要说明的是,实施上述操作后,我不再需要使用DJ

EDIT To be clear, after implementing the above I no longer needed to use DJ

这篇关于ActionMailer“ Net :: ReadTimeout”当使用带有Rackspace的延迟作业“ emailsrvr.com”时,的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆