Я выполнял параллельные задания в кластере SGE с использованием параллельного IPython. Я отправляю свои задания и извлекаю результаты из базы данных хаба (SQlite) позднее, когда все задания завершены, используя идентификатор сообщения заданий. Это работало нормально, пока мой контроллер не разбился; при перезапуске контроллера я не смог получить задания, отправленные на старый контроллер. Я получил эту ошибку:Получение результатов из базы данных параллельного концентратора IPython
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'})
я получаю пустой результат.
Спасибо! Это очень полезно. Есть ли простой способ использовать мой новый контроллер для получения результатов из заданий, которые были отправлены с использованием старого контроллера? Рабочие места заняли некоторое время, и я не хочу их повторно отправлять. Я явно не сохранил UUID для старого контроллера. – KartMan
Вы можете перечислить таблицы в базе данных и получить некоторую информацию, чтобы выяснить, какой из них ([например] (https://gist.github.com/6295505)). Затем просто установите конфигурацию 'SQLiteDB.table' в значение UUID, которое вы хотите восстановить. – minrk