Ruby on rails 3 从在我的系统上注册并处于活动状态的其他主机重新创建工作人员
我目前正在使用的Rails应用程序托管在AmazonEC2服务器上。它使用Resque来运行后台作业,有两个这样的实例(可能是生产和阶段)。此外,我还将Resque监控web应用程序安装到/Resque路径(仅在舞台上) 我的问题是: 为什么在我的后台系统中注册了来自多个主机的工作人员,我如何避免这种情况 其他一些细节: 我看到工人们显然来自3台不同的机器,但我只找到了其中的两台——舞台(显然)和生产。第三种是另一种地址格式(以domU开头),不知道它可能是什么Ruby on rails 3 从在我的系统上注册并处于活动状态的其他主机重新创建工作人员,ruby-on-rails-3,amazon-web-services,amazon-ec2,redis,resque,Ruby On Rails 3,Amazon Web Services,Amazon Ec2,Redis,Resque,我目前正在使用的Rails应用程序托管在AmazonEC2服务器上。它使用Resque来运行后台作业,有两个这样的实例(可能是生产和阶段)。此外,我还将Resque监控web应用程序安装到/Resque路径(仅在舞台上) 我的问题是: 为什么在我的后台系统中注册了来自多个主机的工作人员,我如何避免这种情况 其他一些细节: 我看到工人们显然来自3台不同的机器,但我只找到了其中的两台——舞台(显然)和生产。第三种是另一种地址格式(以domU开头),不知道它可能是什么 看起来您正在跨多个resque服
看起来您正在跨多个resque服务器环境共享一台Redis服务器
安全地做到这一点的最佳方法是使用单独的Redis服务器或单独的Redis数据库或名称空间。Redis名称空间gem可以与Resque一起使用,以隔离每个环境Resque队列和工作数据 我真的无法帮你解决未知的问题,但我在移动主机和更改dns名称时也遇到过类似的情况。我发现清除旧机器的唯一方法是停止机器上的所有工人,启动IRB,
要求“重新确认”
并查看resque.workers
。这将列出resque知道的所有工人,在您的案例中,将包括大约20个伪造的工人。然后,您可以执行以下操作:
Resque.workers.each do {|worker| worker.unregister_worker}
这将删减所有不存在的工作人员,并让您回到真正工作人员的适当展示