从笔记本电脑启动IPython集群并延迟

时间:2013-03-13 04:17:46

标签: python ipython ipython-notebook

我们的SGE群集设置要求控制器和引擎启动之间存在延迟。如果没有这种延迟,一些服务器使用" old" ipcontroller-client.json个文件,并尝试连接到以前(而不是正在运行)的控制器。这是一个NFS"功能",为了解决这个问题,我在ipcluster_config.py文件中设置了c.IPClusterStart.delay = 30,并且运行良好。控制器被提交给SGE,有足够的时间来启动和写入其json文件,然后引擎可以正确启动到新运行的控制器。但是,我也希望能够从笔记本电脑启动集群。不幸的是,似乎没有使用此超时,控制器和引擎同时启动(如watch qstat所示),一些引擎连接(因为从json文件中获取新设置)有些人没有(因为NFS)。

我在笔记本上运行了一个strace,看到它使用sge_controllersge_engines脚本(按下启动时由笔记本创建)来启动这些过程。

我想知道是否有任何方法可以在这里实施延迟。它以正确的方式(SGE)启动控制器和引擎,所以我知道它正在阅读ipcluster_config.py

我用Google搜索并搜索了这个网站,没有运气。希望也许有人可以对这种行为的深层运作有所了解。

谢谢, 克里斯

1 个答案:

答案 0 :(得分:2)

嗯,对于OP来说这可能为时已晚,但希望它有助于某人。

如果是超时问题,只需将c.EngineFactory.timeoutc.IPEngineApp.wait_for_url_file设置为更长的时间。

如果是第一次运行后失败,可能是由于延迟的安全文件,应使用{{1}从相关的iPython配置文件中删除(ipcontroller-engine.jsonipcontroller-client.json)获得完整的路径。为了使其自动化并减少痛苦,可以将此删除步骤添加到相同配置文件IPython.utils.path.get_security_file的开头。

仅这些更改就足以让我轻松地使用笔记本运行集群。

如果这些都没有解决问题,还有其他一些想法(http://mail.scipy.org/pipermail/ipython-user/2011-November/008741.html)。