diff --git a/reflex/config.py b/reflex/config.py index fadd824826..c237d7421f 100644 --- a/reflex/config.py +++ b/reflex/config.py @@ -158,7 +158,7 @@ class Config: app_name: str # The log level to use. - loglevel: constants.LogLevel = constants.LogLevel.INFO + loglevel: constants.LogLevel = constants.LogLevel.DEFAULT # The port to run the frontend on. NOTE: When running in dev mode, the next available port will be used if this is taken. frontend_port: int = constants.DefaultPorts.FRONTEND_PORT diff --git a/reflex/constants/base.py b/reflex/constants/base.py index df64a10068..225e8000b1 100644 --- a/reflex/constants/base.py +++ b/reflex/constants/base.py @@ -173,6 +173,7 @@ class LogLevel(str, Enum): """The log levels.""" DEBUG = "debug" + DEFAULT = "default" INFO = "info" WARNING = "warning" ERROR = "error" diff --git a/reflex/reflex.py b/reflex/reflex.py index 07c1dff5b8..44c0d40ff4 100644 --- a/reflex/reflex.py +++ b/reflex/reflex.py @@ -15,6 +15,7 @@ from reflex import constants from reflex.config import get_config +from reflex.constants.base import LogLevel from reflex.custom_components.custom_components import custom_components_cli from reflex.state import reset_disk_state_manager from reflex.utils import console, redir, telemetry @@ -245,15 +246,30 @@ def _run( setup_frontend(Path.cwd()) commands.append((frontend_cmd, Path.cwd(), frontend_port, backend)) + # If no loglevel is specified, set the subprocesses loglevel to WARNING. + subprocesses_loglevel = ( + loglevel if loglevel != LogLevel.DEFAULT else LogLevel.WARNING + ) + # In prod mode, run the backend on a separate thread. if backend and env == constants.Env.PROD: - commands.append((backend_cmd, backend_host, backend_port, loglevel, frontend)) + commands.append( + ( + backend_cmd, + backend_host, + backend_port, + subprocesses_loglevel, + frontend, + ) + ) # Start the frontend and backend. with processes.run_concurrently_context(*commands): # In dev mode, run the backend on the main thread. if backend and env == constants.Env.DEV: - backend_cmd(backend_host, int(backend_port), loglevel, frontend) + backend_cmd( + backend_host, int(backend_port), subprocesses_loglevel, frontend + ) # The windows uvicorn bug workaround # https://github.com/reflex-dev/reflex/issues/2335 if constants.IS_WINDOWS and exec.frontend_process: diff --git a/reflex/utils/exec.py b/reflex/utils/exec.py index 82fb8d9b34..b6550fdde4 100644 --- a/reflex/utils/exec.py +++ b/reflex/utils/exec.py @@ -16,6 +16,7 @@ from reflex import constants from reflex.config import get_config +from reflex.constants.base import LogLevel from reflex.utils import console, path_ops from reflex.utils.prerequisites import get_web_dir @@ -201,7 +202,11 @@ def get_granian_target(): Returns: The Granian target for the backend. """ - return get_app_module() + f".{constants.CompileVars.API}" + import reflex + + app_module_path = Path(reflex.__file__).parent / "app_module_for_backend.py" + + return f"{str(app_module_path)}:{constants.CompileVars.APP}.{constants.CompileVars.API}" def run_backend( @@ -233,7 +238,7 @@ def run_backend( run_uvicorn_backend(host, port, loglevel) -def run_uvicorn_backend(host, port, loglevel): +def run_uvicorn_backend(host, port, loglevel: LogLevel): """Run the backend in development mode using Uvicorn. Args: @@ -253,7 +258,7 @@ def run_uvicorn_backend(host, port, loglevel): ) -def run_granian_backend(host, port, loglevel): +def run_granian_backend(host, port, loglevel: LogLevel): """Run the backend in development mode using Granian. Args: