Spree - 尝试访问后端时超时

Spree - Timeout when trying to access backend

从今天下午开始,我的大礼包后台突然无法访问了。当我尝试访问后端中的任何页面(/admin/users、/admin/orders 等)时,该页面会加载很长时间,直到超时并出现一般错误页面。

当我查看日志时,我总是看到:

Processing by Spree::Admin::OrdersController#index as HTML
Completed 500 Internal Server Error in 127259ms
** [Airbrake] Success: Net::HTTPOK

Errno::ETIMEDOUT (Connection timed out - connect(2)):
  app/middleware/flash_session_cookie_middleware.rb:18:in `call'

Processing by Spree::Admin::OrdersController#index as HTML
Completed 500 Internal Server Error in 127520ms
** [Airbrake] Success: Net::HTTPOK

SocketError (getaddrinfo: Name or service not known):
app/middleware/flash_session_cookie_middleware.rb:17:in `call'

这是在最后一次部署到生产环境之后开始发生的,它只更改了图像和样式表。尽管有相同的代码和生产数据库的精确副本,但我无法在本地重现错误。 我正在使用 Spree 版本 2.0.3

运行 Spree::Config[:check_for_spree_alerts] = false 在您的控制台中修复此问题。您可能还想将此行添加到您的 initializers/spree.rb 以确保将来不会重新启用 check_for_spree_alerts

发生这种情况是因为 Spree Alerts 网站已停用。参见:https://github.com/spree/spree/pull/6516

具体来说,发生这种情况是因为当登录到后端时,Spree 2.0.x 在此处 https://github.com/spree/spree/blob/2-0-stable/backend/app/controllers/spree/admin/base_controller.rb#L39 检查来自 Spree 网站的任何警报,然后调用 alert.rb:14

HTTParty.get('http://alerts.spreecommerce.com/alerts.json', query: params).parsed_response

目前,alerts.spreecommerce.com 已停产并超时,这解释了您收到的错误。

从 Spree 2.3 开始,Spree 警报代码已被删除,因此您也可以升级到该版本以解决此问题。