Cómo ejecutar iPython Notebook como un servicio

7

¿Cuál sería la mejor manera "estándar" de crear un script launchd para ejecutar python notebook ?

Me gustaría que el servicio se inicie al iniciar sesión y que sea fácil de iniciar, detener y reiniciar el servidor desde una terminal.

    
pregunta Cedric H. 04.11.2015 - 11:35

2 respuestas

7

Al final creé el siguiente archivo .plist. Se carga automáticamente en el inicio e iniciará un cuaderno jupiter y lo mantendrá vivo.

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
          <key>KeepAlive</key>
          <true/>
          <key>Label</key>
          <string>cern.chernals.ipython</string>
          <key>ProgramArguments</key>
          <array>
              <string>/usr/local/bin/jupyter-notebook</string>
          </array>
          <key>RunAtLoad</key>
          <true/>
          <key>StandardErrorPath</key>
          <string>/Users/chernals/Library/LaunchAgents/jupyter-notebook.stderr</string>
          <key>StandardOutPath</key>
          <string>/Users/chernals/Library/LaunchAgents/jupyter-notebook.stdout</string>
              <key>KeepAlive</key>
              <true/>
      </dict>
      </plist>
    
respondido por el Cedric H. 09.11.2015 - 14:16
1

Soy un novato de macOS y la respuesta aceptada me resultó muy útil. Lo modifiqué para no iniciar un navegador al inicio y también comenzar en el directorio ~ / jupyter donde almaceno la mayoría de mis cuadernos.

Para futuras referencias, la manera de hacer que esto comience es poner los datos xml en un archivo en el directorio ~ / Library / LaunchAgents, por ejemplo. ~ / Library / LaunchAgents / org.jupyter.notebook.plist.

El plist con el que terminé fue el siguiente.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>org.jupyter.notebook</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/jupyter-notebook</string>
        <string>--no-browser</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/Users/rickard/Library/LaunchAgents/org.jupyter.notebook.stderr</string>
    <key>StandardOutPath</key>
    <string>/Users/rickard/Library/LaunchAgents/org.jupyter.notebook.stdout</string>
    <key>KeepAlive</key>
    <true/>
    <key>WorkingDirectory</key>
    <string>/Users/rickard/jupyter</string>
</dict>
</plist>

No he encontrado una manera de no tener que codificar el directorio de inicio del usuario allí. La opción EnableGlobbing solo funciona en ProgramArgument, y no hay una expansión de variable de entorno, por lo que por ahora debe estar ahí. .

    
respondido por el Rickard Holmberg 30.12.2016 - 18:49

Lea otras preguntas en las etiquetas