Net::OpenTimeout(执行过期)Sidekiq 异常
Net::OpenTimeout (execution expired) exception on Sidekiq
我正在使用 sidekiq 对我的 Rails 应用程序将发送的电子邮件进行排队。发送电子邮件在开发中有效,但在生产中 sidekiq 会出现网络超时错误。怎么回事?
这是我在 production.rb
中的配置
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 578,
domain: ENV["PPRODUCTION_DOMAIN"],
user_name: ENV["GMAIL_USERNAME"],
password: ENV["GMAIL_PASSWORD"],
authentication: :plain,
enable_starttls_auto: true
}
config.active_job.queue_adapter = :sidekiq
我试过以下方法:
- 禁用 IPv6 并将 IPv4 设置为首选
- 使用非标准端口 (2525) 而不是 587
- 尝试通过
telnet smtp.gmail.com 587
连接。我收到以下错误:telnet: Unable to connect to remote host: Network is unreachable
。可能值得注意的是,我在代理后面运行 - 在这种情况下是否应该有额外的设置?
sudo ufw allow 587
我在 Ubuntu 14.04 服务器上并使用 unicorn 和 nginx 设置了我的应用程序。
我已经在这里工作好几天了。 :( 任何帮助将不胜感激!
更新:
我还尝试了以下方法:
- 删除 sidekiq 以改为使用 Rails' 邮件程序发送电子邮件。相同的结果。
- 通过
telnet smtp.gmail.com 465
连接。这个有效,所以我尝试将生产端口设置为 465,但我仍然遇到相同的错误。
- 删除域,使用我们的生产域,并使用
localhost:3000
。没有任何反应。
根据 Rails guide's Action 邮件基础知识,您提供的端口号不正确。因为它是 587 而不是 578。
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'example.com',
user_name: '<username>',
password: '<password>',
authentication: 'plain',
enable_starttls_auto: true }
希望对您有所帮助!!
通过将端口更改为 456
以某种方式修复了它。
我更改了端口,因为出于某种原因,telnet smtp.gmail.com 587
不起作用,但 telnet smtp.gmail.com 465
起作用。 587
可能被网络屏蔽了。
此外,我不确定以下更改是否也有帮助,但我还将身份验证更改为 :login
而不是 :plain
并添加了 ssl: true
。希望这对遇到同样问题的人有所帮助。
我正在使用 sidekiq 对我的 Rails 应用程序将发送的电子邮件进行排队。发送电子邮件在开发中有效,但在生产中 sidekiq 会出现网络超时错误。怎么回事?
这是我在 production.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 578,
domain: ENV["PPRODUCTION_DOMAIN"],
user_name: ENV["GMAIL_USERNAME"],
password: ENV["GMAIL_PASSWORD"],
authentication: :plain,
enable_starttls_auto: true
}
config.active_job.queue_adapter = :sidekiq
我试过以下方法:
- 禁用 IPv6 并将 IPv4 设置为首选
- 使用非标准端口 (2525) 而不是 587
- 尝试通过
telnet smtp.gmail.com 587
连接。我收到以下错误:telnet: Unable to connect to remote host: Network is unreachable
。可能值得注意的是,我在代理后面运行 - 在这种情况下是否应该有额外的设置? sudo ufw allow 587
我在 Ubuntu 14.04 服务器上并使用 unicorn 和 nginx 设置了我的应用程序。
我已经在这里工作好几天了。 :( 任何帮助将不胜感激!
更新:
我还尝试了以下方法:
- 删除 sidekiq 以改为使用 Rails' 邮件程序发送电子邮件。相同的结果。
- 通过
telnet smtp.gmail.com 465
连接。这个有效,所以我尝试将生产端口设置为 465,但我仍然遇到相同的错误。 - 删除域,使用我们的生产域,并使用
localhost:3000
。没有任何反应。
根据 Rails guide's Action 邮件基础知识,您提供的端口号不正确。因为它是 587 而不是 578。
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'example.com',
user_name: '<username>',
password: '<password>',
authentication: 'plain',
enable_starttls_auto: true }
希望对您有所帮助!!
通过将端口更改为 456
以某种方式修复了它。
我更改了端口,因为出于某种原因,telnet smtp.gmail.com 587
不起作用,但 telnet smtp.gmail.com 465
起作用。 587
可能被网络屏蔽了。
此外,我不确定以下更改是否也有帮助,但我还将身份验证更改为 :login
而不是 :plain
并添加了 ssl: true
。希望这对遇到同样问题的人有所帮助。