Tengo una aplicación Uvicorn simple (construida con FastAPI ). En desarrollo, uvicorn server:app --reload . El --reload significa que se iniciarán dos subprocesos, uno con el servidor y otro para monitorear los cambios de archivo; cuando se detecta un cambio de archivo, se reinicia el subproceso con el servidor.
Nada especial hasta ahora. Esto es común en Flask, Django y otros servidores de desarrollo también. El problema es que quiero abrir un túnel usando pyngrok cuando inicio el servidor de desarrollo, y quiero que ese túnel dure tanto como el padre de estos dos subprocesos. Es decir, cuando se detecta un cambio de archivo y se reinicia el servidor de desarrollo, no quiero que se reinicie el túnel (ya que con ngrok esto haría que se generara una nueva URL pública y se rompieran las conexiones existentes).
Con Flask y Django esto es relativamente fácil de lograr. Por ejemplo, con Flask simplemente hago os.environ.get("WERKZEUG_RUN_MAIN") != "true" , con Django evalúo de manera similar la variable de entorno RUN_MAIN y, en cualquier caso, solo creo una instancia del túnel cuando estos se establecen en true . No puedo encontrar una variable similar para usar con Uvicorn. ¿Alguien puede ayudar aquí?