ActionCable和Heroku Redis配置

68bkxrlz  于 2022-10-31  发布在  Redis
关注(0)|答案(1)|浏览(229)

上周RedisToGo在Herokum上被终止,让我别无选择,只能寻找替代品。我从Heroku那里得到了一个新的订阅:希鲁·雷迪斯。
除了与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 })

是否缺少某些参数导致错误?

ffdz8vbo

ffdz8vbo1#

我使用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 env变量:

$ 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-your-instance
另外两个有用的来源:

相关问题