0

我一直在使用 IPython 并行在 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'})

我得到一个空的结果。

4

1 回答 1

1

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

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

通过该更改,每个后续的 Hub 会话都将建立在相同的任务历史记录上。IPython 2.0 将使这成为默认行为

于 2013-08-21T08:22:58.197 回答