From 2c6942abc36bb797e5cfd071dfa93a6f9fb3b3d3 Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Mon, 26 Dec 2022 22:18:03 -0800 Subject: [PATCH 1/6] Add log level as an arg --- pynecone/constants.py | 10 ++++++++++ pynecone/pc.py | 6 +++++- pynecone/utils.py | 13 +++++++++++-- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/pynecone/constants.py b/pynecone/constants.py index d5326725f21..b053e87e805 100644 --- a/pynecone/constants.py +++ b/pynecone/constants.py @@ -134,6 +134,16 @@ class Env(str, Enum): DEV = "dev" PROD = "prod" +# Log levels +class LogLevel(str, Enum): + """The log levels.""" + + DEBUG = "debug" + INFO = "info" + WARNING = "warning" + ERROR = "error" + CRITICAL = "critical" + class Endpoint(Enum): """Endpoints for the pynecone backend API.""" diff --git a/pynecone/pc.py b/pynecone/pc.py index 2623357a821..eb12a7cab8a 100644 --- a/pynecone/pc.py +++ b/pynecone/pc.py @@ -52,6 +52,7 @@ def run( env: constants.Env = constants.Env.DEV, frontend: bool = True, backend: bool = True, + loglevel: constants.LogLevel = constants.LogLevel.ERROR, ): """Run the app. @@ -59,6 +60,7 @@ def run( env: The environment to run the app in. frontend: Whether to run the frontend. backend: Whether to run the backend. + loglevel: The log level to use. Raises: Exit: If the app is not initialized. @@ -92,7 +94,9 @@ def run( # Run the frontend and backend. if frontend: frontend_cmd(app.app) - if backend: + if backend and env == constants.Env.DEV: + backend_cmd(app.__name__, loglevel) + else: backend_cmd(app.__name__) diff --git a/pynecone/utils.py b/pynecone/utils.py index 6e83aefbf01..269dbf35e88 100644 --- a/pynecone/utils.py +++ b/pynecone/utils.py @@ -532,16 +532,25 @@ def get_num_workers() -> int: return (os.cpu_count() or 1) * 2 + 1 -def run_backend(app_name: str): +def run_backend(app_name: str, loglevel: str = "debug"): """Run the backend. Args: app_name: The app name. """ + from uvicorn import run + + # Configure the logger command = constants.RUN_BACKEND + [ f"{app_name}:{constants.APP_VAR}.{constants.API_VAR}" ] - subprocess.run(command) + + run( + f"{app_name}:{constants.APP_VAR}.{constants.API_VAR}", + host="0.0.0.0", + log_level=loglevel, + reload=True, + ) def run_backend_prod(app_name: str): From 25dfe1bc213b2e17359e54b01a2a72d834846a10 Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Mon, 26 Dec 2022 22:21:59 -0800 Subject: [PATCH 2/6] Got rid of backend command. --- pynecone/constants.py | 2 +- pynecone/utils.py | 9 ++------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/pynecone/constants.py b/pynecone/constants.py index b053e87e805..3d13f40d12b 100644 --- a/pynecone/constants.py +++ b/pynecone/constants.py @@ -64,7 +64,7 @@ # Command to install bun. INSTALL_BUN = "curl https://bun.sh/install | bash" # Command to run the backend in dev mode. -RUN_BACKEND = "uvicorn --log-level debug --reload --host 0.0.0.0".split() +BACKEND_HOST = "0.0.0.0" # The default timeout when launching the gunicorn server. TIMEOUT = 120 # The command to run the backend in production mode. diff --git a/pynecone/utils.py b/pynecone/utils.py index 269dbf35e88..d6aeb4cce6d 100644 --- a/pynecone/utils.py +++ b/pynecone/utils.py @@ -537,17 +537,12 @@ def run_backend(app_name: str, loglevel: str = "debug"): Args: app_name: The app name. + loglevel: The log level. """ from uvicorn import run - - # Configure the logger - command = constants.RUN_BACKEND + [ - f"{app_name}:{constants.APP_VAR}.{constants.API_VAR}" - ] - run( f"{app_name}:{constants.APP_VAR}.{constants.API_VAR}", - host="0.0.0.0", + host=constants.BACKEND_HOST, log_level=loglevel, reload=True, ) From f7106881dbf18e9dbb49869ea25e94b8de7a27af Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Mon, 26 Dec 2022 22:39:00 -0800 Subject: [PATCH 3/6] Formatted. --- pynecone/constants.py | 1 + pynecone/pc.py | 6 ++---- pynecone/utils.py | 6 +++++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/pynecone/constants.py b/pynecone/constants.py index 3d13f40d12b..925c0daae45 100644 --- a/pynecone/constants.py +++ b/pynecone/constants.py @@ -134,6 +134,7 @@ class Env(str, Enum): DEV = "dev" PROD = "prod" + # Log levels class LogLevel(str, Enum): """The log levels.""" diff --git a/pynecone/pc.py b/pynecone/pc.py index eb12a7cab8a..b14c568f264 100644 --- a/pynecone/pc.py +++ b/pynecone/pc.py @@ -94,10 +94,8 @@ def run( # Run the frontend and backend. if frontend: frontend_cmd(app.app) - if backend and env == constants.Env.DEV: - backend_cmd(app.__name__, loglevel) - else: - backend_cmd(app.__name__) + if backend: + backend_cmd(app.__name__, loglevel=loglevel) @cli.command() diff --git a/pynecone/utils.py b/pynecone/utils.py index d6aeb4cce6d..3db935a6607 100644 --- a/pynecone/utils.py +++ b/pynecone/utils.py @@ -540,6 +540,7 @@ def run_backend(app_name: str, loglevel: str = "debug"): loglevel: The log level. """ from uvicorn import run + run( f"{app_name}:{constants.APP_VAR}.{constants.API_VAR}", host=constants.BACKEND_HOST, @@ -548,11 +549,12 @@ def run_backend(app_name: str, loglevel: str = "debug"): ) -def run_backend_prod(app_name: str): +def run_backend_prod(app_name: str, loglevel: str = "debug"): """Run the backend. Args: app_name: The app name. + loglevel: The log level. """ num_workers = get_num_workers() command = constants.RUN_BACKEND_PROD + [ @@ -560,6 +562,8 @@ def run_backend_prod(app_name: str): str(num_workers), "--threads", str(num_workers), + "--log-level", + str(loglevel), f"{app_name}:{constants.APP_VAR}()", ] subprocess.run(command) From 790113bfcc83c2e81b7d5a46e47fecb78a147cbc Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Mon, 26 Dec 2022 22:40:55 -0800 Subject: [PATCH 4/6] Changed default loglevel to error. --- pynecone/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pynecone/utils.py b/pynecone/utils.py index 3db935a6607..3f73a30c70b 100644 --- a/pynecone/utils.py +++ b/pynecone/utils.py @@ -532,7 +532,7 @@ def get_num_workers() -> int: return (os.cpu_count() or 1) * 2 + 1 -def run_backend(app_name: str, loglevel: str = "debug"): +def run_backend(app_name: str, loglevel: str = "error"): """Run the backend. Args: @@ -549,7 +549,7 @@ def run_backend(app_name: str, loglevel: str = "debug"): ) -def run_backend_prod(app_name: str, loglevel: str = "debug"): +def run_backend_prod(app_name: str, loglevel: str = "error"): """Run the backend. Args: From 537cdf7ab12ab1ab3a2a866a2e43a2ea2371d8b0 Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Mon, 26 Dec 2022 22:56:44 -0800 Subject: [PATCH 5/6] fxed pr comments. --- pynecone/constants.py | 2 +- pynecone/utils.py | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/pynecone/constants.py b/pynecone/constants.py index 925c0daae45..b8e723937b0 100644 --- a/pynecone/constants.py +++ b/pynecone/constants.py @@ -63,7 +63,7 @@ BUN_PATH = "$HOME/.bun/bin/bun" # Command to install bun. INSTALL_BUN = "curl https://bun.sh/install | bash" -# Command to run the backend in dev mode. +# Default host in dev mode. BACKEND_HOST = "0.0.0.0" # The default timeout when launching the gunicorn server. TIMEOUT = 120 diff --git a/pynecone/utils.py b/pynecone/utils.py index 3f73a30c70b..b2e8aa4b162 100644 --- a/pynecone/utils.py +++ b/pynecone/utils.py @@ -13,6 +13,7 @@ import string import subprocess import sys +import uvicorn from collections import defaultdict from subprocess import PIPE from types import ModuleType @@ -532,16 +533,14 @@ def get_num_workers() -> int: return (os.cpu_count() or 1) * 2 + 1 -def run_backend(app_name: str, loglevel: str = "error"): +def run_backend(app_name: str, loglevel: constants.LogLevel = constants.LogLevel.ERROR): """Run the backend. Args: app_name: The app name. loglevel: The log level. """ - from uvicorn import run - - run( + uvicorn.run( f"{app_name}:{constants.APP_VAR}.{constants.API_VAR}", host=constants.BACKEND_HOST, log_level=loglevel, @@ -549,7 +548,7 @@ def run_backend(app_name: str, loglevel: str = "error"): ) -def run_backend_prod(app_name: str, loglevel: str = "error"): +def run_backend_prod(app_name: str, loglevel: constants.LogLevel = constants.LogLevel.ERROR): """Run the backend. Args: From 60d50e081068bb515d07510926a6d186983a6ef6 Mon Sep 17 00:00:00 2001 From: Alek Petuskey Date: Mon, 26 Dec 2022 22:57:44 -0800 Subject: [PATCH 6/6] Ran black. --- pynecone/utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pynecone/utils.py b/pynecone/utils.py index b2e8aa4b162..433ede80b99 100644 --- a/pynecone/utils.py +++ b/pynecone/utils.py @@ -548,7 +548,9 @@ def run_backend(app_name: str, loglevel: constants.LogLevel = constants.LogLevel ) -def run_backend_prod(app_name: str, loglevel: constants.LogLevel = constants.LogLevel.ERROR): +def run_backend_prod( + app_name: str, loglevel: constants.LogLevel = constants.LogLevel.ERROR +): """Run the backend. Args: