我们的 SGE 集群设置要求 Controller 和引擎启动之间存在延迟。如果不存在这种延迟,则某些服务器会使用“旧”ipcontroller-client.json
文件并尝试连接到以前的(且未运行的) Controller 。这是一个 NFS“功能”,因此为了补救,我在 ipcluster_config.py 文件中设置了 c.IPClusterStart.delay = 30,一切正常。 Controller 被提交给SGE,有足够的时间启动并写入其json文件,然后引擎可以正确启动到新运行的 Controller 。但是,我还希望能够从笔记本启动集群。不幸的是,似乎没有使用这个超时, Controller 和引擎同时启动(如 watch qstat
所示),一些引擎连接(因为从json 文件),有些则没有(因为 NFS)。
我在笔记本上运行了 strace,发现它使用 sge_controller
和 sge_engines
脚本(当您按开始时由笔记本创建)来启动这些进程。
我想知道是否还有办法在这里实现延迟。它以正确的方式启动 Controller 和引擎 (SGE),所以我知道它正在读取 ipcluster_config.py。
我用谷歌搜索过这个网站,但没有成功。希望有人能够阐明这种行为的更深层次的运作方式。
谢谢, 克里斯
最佳答案
好吧,这对于OP来说可能为时已晚,但希望它能对某人有所帮助。
如果是超时问题,只需将c.EngineFactory.timeout
和c.IPEngineApp.wait_for_url_file
设置为更大的时间即可。
如果是由于第一次运行后失败,则可能是由于残留的安全文件,应将其删除(ipcontroller-engine.json
和ipcontroller-client.json
)从相关的 iPython 配置文件中使用 IPython.utils.path.get_security_file 获取完整路径。为了自动执行此操作并减轻痛苦,可以将此删除步骤附加到同一配置文件的 ipcluster_config.py
的开头。
仅这些更改就足以让我轻松地让集群与笔记本一起运行。
如果这些都不能解决问题,还有其他一些想法(http://mail.scipy.org/pipermail/ipython-user/2011-November/008741.html)。
关于python - 从笔记本启动 IPython 集群有延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15376992/