Jupyter не может открыть записную книжку с ошибкой: «Файл« XX »содержит несохраненные изменения, закрыть без сохранения?» - PullRequest
2 голосов
/ 01 ноября 2019

Я запускаю ноутбуки Jupyter на кластере машин, которые используют распределенную файловую систему.

Через некоторое время я не могу открыть новые ноутбуки из-за ошибки:

Close without saving?
File "XXX.ipynb" has unsaved changes, close without saving?

Глядя на логи Jupyter, я вижу, что эта ошибка возникает, потому что база данных nbsignatures.db заблокирована.

[E 15:58:01.190 LabApp] Uncaught exception GET /api/contents/workspace/proteinsolver/notebooks/XXX.ipynb?type=notebook&content=1&1572638276143 (10.74.73.2)
    HTTPServerRequest(protocol='http', host='localhost:9416', method='GET', uri='/api/contents/workspace/proteinsolver/notebooks/04_sudoku_train-01-Copy8.ipynb?type=notebook&content=1&1572638276143', version='HTTP/1.1', remote_ip='10.74.73.2')
    Traceback (most recent call last):
      File "/home/username/miniconda3/lib/python3.7/site-packages/tornado/web.py", line 1699, in _execute
        result = await result
      File "/home/username/miniconda3/lib/python3.7/site-packages/tornado/gen.py", line 209, in wrapper
        yielded = next(result)
      File "/home/username/miniconda3/lib/python3.7/site-packages/notebook/services/contents/handlers.py", line 112, in get
        path=path, type=type, format=format, content=content,
      File "/home/username/miniconda3/lib/python3.7/site-packages/notebook/services/contents/filemanager.py", line 433, in get
        model = self._notebook_model(path, content=content)
      File "/home/username/miniconda3/lib/python3.7/site-packages/notebook/services/contents/filemanager.py", line 392, in _notebook_model
        self.mark_trusted_cells(nb, path)
      File "/home/username/miniconda3/lib/python3.7/site-packages/notebook/services/contents/manager.py", line 508, in mark_trusted_cells
        trusted = self.notary.check_signature(nb)
      File "/home/username/miniconda3/lib/python3.7/site-packages/nbformat/sign.py", line 439, in check_signature
        return self.store.check_signature(signature, self.algorithm)
      File "/home/username/miniconda3/lib/python3.7/site-packages/nbformat/sign.py", line 232, in check_signature
        """, (algorithm, digest)).fetchone()
    sqlite3.OperationalError: database is locked

Какой самый простой способ решить эту проблему?

1 Ответ

0 голосов
/ 01 ноября 2019

Jupyter использует базу данных SQLite для записи подписей в записной книжке, а , как сообщалось ранее , SQLite плохо работает на распределенных файловых системах.

Сначала нам нужно сгенерировать файл конфигурации Jupyter (он не создается по умолчанию):

jupyter notebook --generate-config

Затем нам нужно отредактировать этот файл конфигурации (jupyter_notebook_config.py), чтобы установить для механизма хранения SQLite по умолчанию значение :memory::

c.NotebookNotary.db_file = ':memory:'

Открытие новых записных книжек больше не требует звонка в базу данных!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...