Browse Source

use granian features to improve hot reload (#5023)

* use granian features to improve hot reload

* set worker kill timeout to 2 seconds

* bump granian min
Khaleel Al-Adhami 1 month ago
parent
commit
2a221fca7a
3 changed files with 7 additions and 3 deletions
  1. 1 1
      pyproject.toml
  2. 4 0
      reflex/utils/exec.py
  3. 2 2
      uv.lock

+ 1 - 1
pyproject.toml

@@ -25,7 +25,7 @@ dependencies = [
   "charset-normalizer >=3.3.2,<4.0",
   "distro >=1.8.0,<2.0; platform_system == 'Linux'",
   "fastapi >=0.96.0,!=0.111.0,!=0.111.1",
-  "granian[reload] >=2.0.0",
+  "granian[reload] >=2.2.0",
   "gunicorn >=23.0.0,<24.0.0",
   "httpx >=0.25.1,<1.0",
   "jinja2 >=3.1.2,<4.0",

+ 4 - 0
reflex/utils/exec.py

@@ -330,6 +330,7 @@ def run_uvicorn_backend(host: str, port: int, loglevel: LogLevel):
         log_level=loglevel.value,
         reload=True,
         reload_dirs=list(map(str, get_reload_paths())),
+        reload_delay=0.1,
     )
 
 
@@ -356,6 +357,9 @@ def run_granian_backend(host: str, port: int, loglevel: LogLevel):
         log_level=LogLevels(loglevel.value),
         reload=True,
         reload_paths=get_reload_paths(),
+        reload_ignore_worker_failure=True,
+        reload_tick=100,
+        workers_kill_timeout=2,
     ).serve()
 
 

+ 2 - 2
uv.lock

@@ -640,7 +640,7 @@ name = "importlib-metadata"
 version = "8.6.1"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "zipp" },
+    { name = "zipp", marker = "python_full_version < '3.12'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/33/08/c1395a292bb23fd03bdf572a1357c5a733d3eecbab877641ceacab23db6e/importlib_metadata-8.6.1.tar.gz", hash = "sha256:310b41d755445d74569f993ccfc22838295d9fe005425094fad953d7f15c8580", size = 55767 }
 wheels = [
@@ -1780,7 +1780,7 @@ requires-dist = [
     { name = "charset-normalizer", specifier = ">=3.3.2,<4.0" },
     { name = "distro", marker = "sys_platform == 'linux'", specifier = ">=1.8.0,<2.0" },
     { name = "fastapi", specifier = ">=0.96.0,!=0.111.0,!=0.111.1" },
-    { name = "granian", extras = ["reload"], specifier = ">=2.0.0" },
+    { name = "granian", extras = ["reload"], specifier = ">=2.2.0" },
     { name = "gunicorn", specifier = ">=23.0.0,<24.0.0" },
     { name = "httpx", specifier = ">=0.25.1,<1.0" },
     { name = "jinja2", specifier = ">=3.1.2,<4.0" },