使用ipcluster从Linux连接到OS X服务器w / EPD?

时间:2013-02-11 22:43:18

标签: parallel-processing ipython enthought

我正在尝试使用IPython.parallel对SSH的支持,以允许我的Linux客户端从安装了EPD64的OS X服务器运行远程ipengine。但是,这会失败,因为它尝试使用我的本地计算机找出在远程主机上运行的正确命令,该主机的ipengineapp包位于不同的位置。如何修改ipcluster_config.py以识别差异?

具体来说,当我在远程主机上运行ipcluster start --log-level=DEBUG时,我得到控制台输出,告诉我包含如下所示的行:

[IPClusterStart] Starting LocalEngineLauncher: ['/Library/Frameworks/EPD64.framework/Versions/7.3/bin/python', '-c', 'from IPython.parallel.apps.ipengineapp import launch_new_instance; launch_new_instance()', '--profile-dir', u'/Users/username/.ipython/profile_default', '--cluster-id', u'', '--log-to-file', '--log-level=20']

另一方面,当我使用ipcluster start --log-level=DEBUG从我的本地计算机运行时,我得到以下行,因为它适用于Linux主机:

[IPClusterStart] Starting SSHEngineLauncher: ['ssh', '-tt', u'hostname', '/usr/bin/python', u'/usr/lib/python2.7/site-packages/IPython/parallel/apps/ipengineapp.py', '--profile-dir', u'/home/username/.ipython/profile_ssh', '--log-to-file', '--log-level=20']

此示例的ipcluster_config.py为:

c = get_config()
c.IPClusterEngines.engine_launcher_class = 'SSHEngineSetLauncher'
c.IPClusterStart.controller_launcher_class = 'SSHControllerLauncher'

c.SSHEngineSetLauncher.engines = {
    'hostname1': 12,
    'hostname2': 12,
}

1 个答案:

答案 0 :(得分:1)

我认为这在0.14中有所改进,但您要查找的配置值是SSHEngineSetLauncher.engine_cmd。 在ipcluster_config.py中编辑它,所以它类似于:

c.SSHEngineSetLauncher.engine_cmd = ['/path/to/your/python', '-c', 'from IPython.parallel.apps.ipengineapp import launch_new_instance; launch_new_instance()']

或者,有时甚至是最简单的事情,只要您的PATH在简单的ssh会话中配置:

c.SSHEngineSetLauncher.engine_cmd = ['ipengine']