gpt4 book ai didi

ruby - Mandrill-api Excon::错误::SocketError

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:49 27 4
gpt4 key购买 nike

我在 Ruby 中使用 Mandrill-api 以编程方式发送交易电子邮件。

我的 Rails 应用程序中(或多或少)有以下行,

mandrill ||= Mandrill::API.new const(:API)[:MANDRILL_APIKEY]
... (constructing the message, content, etc)
mandrill.messages.send_template templ, template_content, message, true

问题是在生产环境中运行时,它偶尔返回以下错误。

Excon::Errors::SocketError (EOFError (EOFError)):
app/mailers/mailer.rb:24:in `send'
....

我不知道如何调试这个问题。如果有人能让我了解调试它的方法,我将非常感激。

gem 信息:

  • mandrill-api (1.0.33)
  • 执行委员会 (0.16.10)

生产环境:

 sudo bundle exec rake RAILS_ENV=production about


About your application's environment
Ruby version 1.9.3 (x86_64-linux)
RubyGems version 1.8.11
Rack version 1.4
Rails version 3.2.13
Active Record version 3.2.13
Action Pack version 3.2.13
Active Resource version 3.2.13
Action Mailer version 3.2.13
Active Support version 3.2.13
Middleware Rack::Cache, Rack::Lock, #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x00000001e72330>, Rack::Runtime, Rack::MethodOverride, ActionDispatch::RequestId, Rails::Rack::Logger, ActionDispatch::ShowExceptions, ActionDispatch::DebugExceptions, ActionDispatch::RemoteIp, ActionDispatch::Callbacks, ActiveRecord::ConnectionAdapters::ConnectionManagement, ActiveRecord::QueryCache, ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, ActionDispatch::Flash, ActionDispatch::ParamsParser, ActionDispatch::Head, Rack::ConditionalGet, Rack::ETag, ActionDispatch::BestStandardsSupport
Environment production
Database adapter mysql2

运行时间:

Apache 服务器:Apache/2.2.22 (Ubuntu)

乘客:3.0.14

最佳答案

这很可能是套接字超时。 Excon 尝试尽可能使用持久连接,但不幸的是,有时这会反咬我们一口。 mandrill-api 似乎试图在其调用方法中重用相同的连接/套接字:https://bitbucket.org/mailchimp/mandrill-api-ruby/src/03e3e28e77dcba31eab7d2f9e2216b5a01d2110d/lib/mandrill.rb?at=master#cl-35

这通常应该没问题,但如果给定 session 存在的时间较长(即猜测可能超过 30 秒),则可能会导致您在上面看到的行为。在 excon 连接上调用 #reset 将确保您不会遇到这种情况,因此这可能是最安全的方法(尽管这可以防止使用持久连接,因此如果您执行大量请求,性能会受到很小的影响).

我希望这有帮助,也许我们应该与 mandrill-api 讨论更新这个问题。考虑到所涉及的性能影响,可能仅取决于问题的间歇性(或不间断性)。希望能有所帮助,但我当然很乐意尽我所能讨论/提供帮助。

关于ruby - Mandrill-api Excon::错误::SocketError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17771563/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com