如果代码导出与redis相关的函数,它将引发
Redis::InheritedError:尝试使用来自子进程的连接而不重新连接。你需要在分叉之后重新连接到Redis。
当redis连接时,它会将spork process.pid保存为@pid,然后redis执行它将使用ensure_connected检查连接,这将由Process.pid != @pid检查。这两个pids是不同的,因此它会引发Redis::InheritedError。
通过谷歌它,
Resque.after_fork do
Resque.redis.client.reconnect
end并重新连接每个规范的redis客户端
他们俩都不为我工作。
发布于 2013-05-07 10:25:43
升级到2.6.12后,问题解决了。
发布于 2013-04-22 14:33:33
我在这里找到了解决方案,它对我有效:Hacki.ly
看起来这是在spec_helper.rb中添加以下内容的问题:
RSpec.configure do |config|
# ...
config.before :all do
$redis.client.reconnect
end
# ...
end您可能需要将$redis更改为获取对Redis实例的引用所使用的任何内容。
发布于 2013-06-28 16:29:31
通过在spec_helper.rb中添加以下内容,我能够修复这个问题:
Spork.each_run do
$redis.client.reconnect
end同样,正如Gabe的答案中提到的,您可能需要将$redis更改为获取对Redis实例的引用所使用的任何内容。
https://stackoverflow.com/questions/15964754
复制相似问题