从Redis恢复:: TimeoutError

时间:2014-09-18 14:21:51

标签: ruby-on-rails heroku redis

我最近在Heroku上使用我的应用程序遇到此错误。发现了这一点:

My::Application.config.session_store :redis_session_store, {
  # ... other options ...
  on_redis_down: ->(e, env, sid) { do_something_will_ya!(e) }
  redis: {
    # ... redis options ...
  }
}

在gem github页面上。所以我的问题是,我在这个块中传递了什么,以及如何将错误传达给用户。一般来说,这是怎么做的?

我是否提出异常,而不是在我的应用程序控制器中捕获它并执行某些操作或?我真的不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

为了处理错误,您有一些基于您的架构的选择。

首先,最重要的是确保记录问题,以便追踪罪魁祸首。

其次,我不确定你使用redis。但是,如果您的网站需要redis才能运行,那么您实际上已经失败了,应该将其传达给您的用户以及您的支持/运营/开发/自我。

如果你使用redis作为缓存机制,但可以从数据库中读取,那么对于这种情况来说这是一个相当简单的修复,但听起来这听起来不是你的情况。

修正错误: 通常,对于redis超时错误或任何超时错误,它表示更大的问题。例如,您是否向redis发送了大量单独的命令,而不是批量处理命令?

您可以执行重试机制,但是在超时错误上,通常意味着如果用户是与UI /接口相关的操作,您的网站将不会响应用户。