@@ -565,6 +565,12 @@ def run_backend_prod(
565565 run_uvicorn_backend_prod (host , port , loglevel )
566566
567567
568+ def _get_backend_workers ():
569+ from reflex .utils import processes
570+
571+ return processes .get_num_workers ()
572+
573+
568574def run_uvicorn_backend_prod (host : str , port : int , loglevel : LogLevel ):
569575 """Run the backend in production mode using Uvicorn.
570576
@@ -585,6 +591,7 @@ def run_uvicorn_backend_prod(host: str, port: int, loglevel: LogLevel):
585591 "uvicorn" ,
586592 * ("--host" , host ),
587593 * ("--port" , str (port )),
594+ * ("--workers" , str (_get_backend_workers ())),
588595 "--factory" ,
589596 app_module ,
590597 ]
@@ -600,8 +607,8 @@ def run_uvicorn_backend_prod(host: str, port: int, loglevel: LogLevel):
600607 "-m" ,
601608 "gunicorn" ,
602609 "--preload" ,
603- "--worker-class" ,
604- "uvicorn.workers.UvicornH11Worker" ,
610+ * ( "--worker-class" , "uvicorn.workers.UvicornH11Worker" ) ,
611+ * ( "--threads" , str ( _get_backend_workers ())) ,
605612 * ("--bind" , f"{ host } :{ port } " ),
606613 * env_args ,
607614 f"{ app_module } ()" ,
@@ -643,13 +650,19 @@ def run_granian_backend_prod(host: str, port: int, loglevel: LogLevel):
643650 * ("--interface" , str (Interfaces .ASGI )),
644651 * ("--factory" , get_app_instance_from_file ()),
645652 ]
653+
654+ extra_env = {
655+ environment .REFLEX_SKIP_COMPILE .name : "true" , # skip compile for prod backend
656+ }
657+
658+ if "GRANIAN_WORKERS" not in os .environ :
659+ extra_env ["GRANIAN_WORKERS" ] = str (_get_backend_workers ())
660+
646661 processes .new_process (
647662 command ,
648663 run = True ,
649664 show_logs = True ,
650- env = {
651- environment .REFLEX_SKIP_COMPILE .name : "true"
652- }, # skip compile for prod backend
665+ env = extra_env ,
653666 )
654667
655668
0 commit comments