当前状况: 我有一个Ra应用程序,带有N个延迟的工作人员。无论何时我想向某台机器发送SSH请求,我都会为该工作人员创建一个任务。工人执行类似的操作:Rails +延迟作业:SSH连接池
Net:SSH.start(hostname, username, :password => pass) do |ssh|
ssh.exec!(command)
end
有时候我会创建例如50个这样的任务要一一执行,或者在5-10分钟之内完成。在这种情况下,每个任务都会打开单独的连接,但这种连接无效,有时由于连接太多而被目标服务器阻止。
我想要什么:已打开连接存储在某处并被每个工作人员重新使用。所以每个工人获得连接不知何故,然后只需运行
ssh.exec!(command)
我已经试过:
- 存储在文件/数据库连接/缓存看起来是因为它们不是序列化不可能
- 已尝试使用初始化器下实例化的全局变量的单例类。然而,每个工作者的类对象是不同的(后来发现全局变量不能作为选项)。
有没有办法解决这个问题?任何其他想法?谢谢!!
你的任务是否持续了一段时间,还是你只是不同步SSH任务? –
任务实际上并未延迟,但更像是排队。例如,有一个操作A,在这个操作中,执行一堆ssh命令,然后执行任务B(5-10分钟),然后执行任务C(再次执行ssh请求) –