ActionCable and Heroku Redis configuration



上周RedisToGo在Herokum上被终止,这让我别无选择,只能找到替代方案。我从Heroku获得了一个新的订阅:Heroku Redis。

除了与ActionCable相关的事情外,一切似乎都很好(所有任务/作业(。

[ActionCable] [#######] Registered connection (#########)
2022-08-17T00:40:23.213184+00:00 app[web.1]: #<Thread:0x00007e#####@/app/vendor/bundle/ruby/2.6.0/gems/actioncable-5.1.7/lib/action_cable/subscription_adapter/redis.rb:144 run> terminated with exception (report_on_exception is true):
2022-08-17T00:40:23.213206+00:00 app[web.1]: /app/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:268:in `rescue in io': Connection lost (ECONNRESET) (Redis::ConnectionError)

在过去的几天里,我尝试了各种各样的把戏,但都无济于事。我的cable.yml文件看起来像:

production:
adapter: redis
url: <%= ENV['REDIS_URL'] %>

我的redis.rb文件如下所示:

uri = if Rails.env == 'production'
URI.parse(ENV["REDIS_URL"])
else
URI.parse("redis://localhost:6379")
end
Resque.redis = Redis.new(host: uri.host, port: uri.port, password: uri.password, ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE })

我是否遗漏了导致错误的某些参数?

我使用Heroku Redis,下面是我的cable.yml的样子:

development:
adapter: redis
url: redis://localhost:6379/1
channel_prefix: myapp_development
test:
adapter: redis
url: redis://localhost:6379/1
channel_prefix: myapp_test
production:
adapter: redis
url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
channel_prefix: myapp_production
ssl_params:
verify_mode: <%= OpenSSL::SSL::VERIFY_NONE %>

如果你的任务和作业不使用Redis(如果ActionCable是唯一尝试使用Redis的东西(,那么你的Redis可能实际上没有正确设置。这是文件。

  1. 检查以确保Heroku实际设置了REDIS_URL环境变量:
$ heroku config | grep REDIS
> REDIS_URL: redis://h:asdfqwer1234asdf@ec2-111-1-1-1.compute-1.amazonaws.com:111
  1. 确保您的实例具有正常配置:https://devcenter.heroku.com/articles/heroku-redis#configuring-您的实例

另外两个有用的来源:

  • 如何解决Heroku 上Redis 6的SSL错误

  • ActionCable Redis适配器与Heroku Redis 6 崩溃

相关内容

  • 没有找到相关文章

最新更新