【问题标题】:Heroku Redis cant open connectionHeroku Redis 无法打开连接
【发布时间】:2016-05-15 18:19:43
【问题描述】:

我遵循 Ryan Bates 教程 ActionController Live,并在 heroku 部署应用程序。一切正常,除了事件,Ryan 对我们应该重新打开 redis 连接感到难过,而我做不到。我使用 RedisToGo 在 heroku 上执行 redis。 这是我的事件控制器操作:

def events
    response.headers["Content-Type"] = "text/event-stream"
    redis = Redis.new(:url => uri)
    redis.psubscribe('messages.*') do |on|
        on.pmessage do |pattern, event, data|
            response.stream.write("event: #{event}\n")
            response.stream.write("data: #{data}\n\n")
        end
    end
    rescue IOError
        logger.info "Stream closed"
    ensure
        redis.quit
        response.stream.close
end

这里也是redis初始化器:

uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:url => uri)

有人可以帮我吗?

编辑

我只是使用Redis.new(url: ENV["REDISTOGO_URL"]) 初始化客户端而不是在事件控制器操作中解析 URI。

【问题讨论】:

    标签: ruby-on-rails heroku redis redistogo


    【解决方案1】:

    替换这个:

    redis = Redis.new(:url => uri)
    redis.psubscribe
    

    用这个:

    REDIS.psubscribe
    

    上面有 'redis' 的任何地方,替换为 REDIS 全局。

    【讨论】:

    • 这不能解决问题,事件没有发生,没有错误发生
    • 您的配置/初始化程序中有 REDIS = Redis.new,对吧?
    • 在创建控制器操作中也有这一行:REDIS.publish('messages.create', @message.to_json)
    • at=error code=H12 desc="Request timeout" dyno=web.1 connect=0ms service=30000ms status=503 bytes=0 在服务器日志中找到这个错误,如果我不打开它的原因事件操作中的连接
    猜你喜欢
    • 2022-01-26
    • 2015-08-03
    • 2012-05-26
    • 1970-01-01
    • 2021-06-30
    • 2022-09-23
    • 2011-09-18
    • 1970-01-01
    相关资源
    最近更新 更多