Ejecuto un servicio de notebook jupyter 4.4.0 (jupyter notebook --no-browser --port 8889) en un servidor fedora 27, al que accedo de forma remota a través de un navegador. Después de algunas horas de usar el servicio sin ningún problema, aparece un "Error de kernel". En las primeras horas, puedo iniciar nuevos cuadernos sin errores. Sin embargo, después de cierto tiempo, aparece el mensaje de error que aparece a continuación. Me dice claramente que el error del kernel se debe a que falta el archivo '/run/user/1001/jupyter/kernel-869f88b2-0895-40fb-b759-c518a1686484.json'.
Al investigar más a fondo, noté que falta el archivo porque falta todo el directorio jupyter en /run/user/1001. El directorio jupyter parece crearse cuando inicio el servicio por primera vez y luego parece que se elimina automáticamente después de un tiempo.
Días de búsqueda han indicado que el problema probablemente se debe a la inactividad, lo que hace que el sistema operativo o el servicio jupyter eliminen el directorio /run/user/1001/jupyter.
Hasta ahora no he podido descubrir exactamente qué está eliminando el directorio /run/user/1001/jupyter o cómo evitar que eso suceda. ¿Sabes cómo se podría solucionar esto?
Mensaje de error
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'
Gracias
Respuesta1
Soluciono este problema configurando la variable JUPYTER_RUNTIME_DIR. Jupyter almacena archivos de tiempo de ejecución en $XDG_RUNTIME_DIR/jupyter de forma predeterminada. Configurar JUPYTER_RUNTIME_DIR anulará este comportamiento. Puede configurarlo en algún directorio que no se limpie automáticamente para evitar este error.
Esto es lo que hago antes de iniciar jupyter:
export JUPYTER_RUNTIME_DIR="path_to_my_home_directory/.jupyter_runtime"
¡Y el problema está resuelto!
Algunos detalles más que encuentro:
https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables