从IPython并行中心数据库中检索结果

时间:2013-08-20 22:31:26

标签: database cluster-computing ipython sungridengine ipython-parallel

我一直在使用IPython parallel在SGE集群上运行并行作业。我提交了我的作业,并在所有作业完成后使用作业消息ID从中心数据库(SQlite)中检索结果。这很好,直到我的控制器崩溃;在重新启动控制器时,我无法检索提交给旧控制器的作业。我收到了这个错误:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/IPython/parallel/controller/hub.py", line 1281, in get_results
    raise KeyError('No such message: '+msg_id)
KeyError: u'No such message: 7f1996c0-deb0-4d7c-8782-619c86d2d064'

数据库文件(tasks.db)仍然存在且与集线器崩溃前的大小相同。所以,我确信结果在数据库中。我可以使用新控制器检索它们吗? 另外,如果我使用bd_query命令:

rc.db_query({'msg_id' : '7f1996c0-deb0-4d7c-8782-619c86d2d064'})

我得到一个空的结果。

1 个答案:

答案 0 :(得分:1)

默认情况下,启动Controller会创建一个新表(带有UUID)。如果您希望每个Hub会话继续添加到同一个表中,请将此行添加到ipcontroller-config.py

c.SQLiteDB.table = 'ipython-tasks' # or any other value

通过该更改,每个后续Hub会话都将构建在相同的任务历史记录中。 IPython 2.0将生成此the default behavior