Я запускаю службу блокнотов jupyter 4.4.0 (jupyter notebook --no-browser --port 8889) на сервере fedora 27, к которому я получаю удаленный доступ через браузер. После нескольких часов использования службы без каких-либо проблем я получаю «Ошибку ядра». В течение первых нескольких часов я могу запускать новые блокноты без ошибок. Однако через некоторое время я получаю сообщение об ошибке, приведенное ниже. Оно ясно говорит мне, что ошибка ядра вызвана отсутствием файла «/run/user/1001/jupyter/kernel-869f88b2-0895-40fb-b759-c518a1686484.json».
При дальнейшем исследовании я заметил, что файл отсутствует, поскольку весь каталог jupyter отсутствует в /run/user/1001. Каталог jupyter, похоже, создается при первом запуске службы, а затем автоматически удаляется через некоторое время.
Дни поисков показали, что проблема, скорее всего, является результатом бездействия, в результате которого ОС или служба Jupyter удаляют каталог /run/user/1001/jupyter.
Пока что я не смог выяснить, что именно удаляет каталог /run/user/1001/jupyter или как это остановить. Знаете ли вы, как это можно решить?
Сообщение об ошибке
Traceback (most recent call last):
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/web.py", line 1469, in _execute
result = yield result
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
value = future.result()
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
raise_exc_info(self._exc_info)
File "<string>", line 3, in raise_exc_info
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1021, in run
yielded = self.gen.throw(*exc_info)
File "/opt/anaconda3/lib/python3.6/site-packages/notebook/services/sessions/handlers.py", line 73, in post
type=mtype))
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
value = future.result()
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
raise_exc_info(self._exc_info)
File "<string>", line 3, in raise_exc_info
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1021, in run
yielded = self.gen.throw(*exc_info)
File "/opt/anaconda3/lib/python3.6/site-packages/notebook/services/sessions/sessionmanager.py", line 79, in create_session
kernel_id = yield self.start_kernel_for_session(session_id, path, name, type, kernel_name)
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
value = future.result()
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
raise_exc_info(self._exc_info)
File "<string>", line 3, in raise_exc_info
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1021, in run
yielded = self.gen.throw(*exc_info)
File "/opt/anaconda3/lib/python3.6/site-packages/notebook/services/sessions/sessionmanager.py", line 92, in start_kernel_for_session
self.kernel_manager.start_kernel(path=kernel_path, kernel_name=kernel_name)
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
value = future.result()
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
raise_exc_info(self._exc_info)
File "<string>", line 3, in raise_exc_info
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 285, in wrapper
yielded = next(result)
File "/opt/anaconda3/lib/python3.6/site-packages/notebook/services/kernels/kernelmanager.py", line 160, in start_kernel
super(MappingKernelManager, self).start_kernel(**kwargs)
File "/opt/anaconda3/lib/python3.6/site-packages/jupyter_client/multikernelmanager.py", line 110, in start_kernel
km.start_kernel(**kwargs)
File "/opt/anaconda3/lib/python3.6/site-packages/jupyter_client/manager.py", line 240, in start_kernel
self.write_connection_file()
File "/opt/anaconda3/lib/python3.6/site-packages/jupyter_client/connect.py", line 472, in write_connection_file
kernel_name=self.kernel_name
File "/opt/anaconda3/lib/python3.6/site-packages/jupyter_client/connect.py", line 137, in write_connection_file
with open(fname, 'w') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/run/user/1001/jupyter/kernel-869f88b2-0895-40fb-b759-c518a1686484.json'
Спасибо
решение1
Я исправляю эту проблему, устанавливая переменную JUPYTER_RUNTIME_DIR. Jupyter хранит файлы времени выполнения в $XDG_RUNTIME_DIR/jupyter по умолчанию. Установка JUPYTER_RUNTIME_DIR переопределит это поведение. Вы можете установить его в какой-либо каталог, который не будет автоматически очищаться, чтобы предотвратить эту ошибку.
Вот что я делаю перед запуском Jupyter:
export JUPYTER_RUNTIME_DIR="path_to_my_home_directory/.jupyter_runtime"
И проблема решена!
Еще несколько деталей, которые я нашел:
https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables