Просмотр исходного кода

add strict hot reload env flag to detect envvars on hotreload (#5311)

Khaleel Al-Adhami 1 неделя назад
Родитель
Сommit
c27bd39486
2 измененных файлов с 8 добавлено и 0 удалено
  1. 3 0
      reflex/config.py
  2. 5 0
      reflex/utils/exec.py

+ 3 - 0
reflex/config.py

@@ -748,6 +748,9 @@ class EnvironmentVariables:
     # The timeout to wait for a pong from the websocket server in seconds.
     REFLEX_SOCKET_TIMEOUT: EnvVar[int] = env_var(constants.Ping.TIMEOUT)
 
+    # Whether to run Granian in a spawn process. This enables Reflex to pick up on environment variable changes between hot reloads.
+    REFLEX_STRICT_HOT_RELOAD: EnvVar[bool] = env_var(False)
+
 
 environment = EnvironmentVariables()
 

+ 5 - 0
reflex/utils/exec.py

@@ -384,6 +384,11 @@ def run_granian_backend(host: str, port: int, loglevel: LogLevel):
     """
     console.debug("Using Granian for backend")
 
+    if environment.REFLEX_STRICT_HOT_RELOAD.get():
+        import multiprocessing
+
+        multiprocessing.set_start_method("spawn", force=True)
+
     from granian.constants import Interfaces
     from granian.log import LogLevels
     from granian.server import MPServer as Granian