From 9942efdf6d6b6177b2503fa5a74a6ac38670cab3 Mon Sep 17 00:00:00 2001 From: Gabriel Almeida Date: Tue, 14 Mar 2023 10:27:47 -0300 Subject: [PATCH 1/2] fix: set workers to 0 if env variable is not set --- langflow/backend/langflow_backend/__main__.py | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/langflow/backend/langflow_backend/__main__.py b/langflow/backend/langflow_backend/__main__.py index 6764dc350..87c15b5a2 100644 --- a/langflow/backend/langflow_backend/__main__.py +++ b/langflow/backend/langflow_backend/__main__.py @@ -1,4 +1,7 @@ import multiprocessing +import os +import platform + from langflow_backend.main import create_app import typer @@ -8,6 +11,18 @@ from pathlib import Path from langflow_backend.server import LangflowApplication +def get_number_of_workers(workers=None): + if workers is None: + workers = ( + int(os.environ.get("OBJC_DISABLE_INITIALIZE_FORK_SAFETY", "0") == "YES") + if platform.system() == "Darwin" + else 1 + ) + elif workers == -1: + workers = (multiprocessing.cpu_count() * 2) + 1 + return workers + + def serve( workers: int = None, timeout: int = None, @@ -21,17 +36,13 @@ def serve( StaticFiles(directory=static_files_dir, html=True), name="static", ) - if not workers: - workers = 1 - elif workers == -1: - workers = (multiprocessing.cpu_count() * 2) + 1 if not timeout: timeout = 60 options = { "bind": "127.0.0.1:5003", - "workers": workers, + "workers": get_number_of_workers(workers), "worker_class": "uvicorn.workers.UvicornWorker", "timeout": timeout, } From f9a049a84d494ec86ec33b68eb2596e14612ad32 Mon Sep 17 00:00:00 2001 From: Gabriel Almeida Date: Tue, 14 Mar 2023 10:48:18 -0300 Subject: [PATCH 2/2] fix: if on macOS use uvicorn --- langflow/backend/langflow_backend/__main__.py | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/langflow/backend/langflow_backend/__main__.py b/langflow/backend/langflow_backend/__main__.py index 87c15b5a2..ee3a5e7d5 100644 --- a/langflow/backend/langflow_backend/__main__.py +++ b/langflow/backend/langflow_backend/__main__.py @@ -8,16 +8,10 @@ import typer from fastapi.staticfiles import StaticFiles from pathlib import Path -from langflow_backend.server import LangflowApplication - def get_number_of_workers(workers=None): if workers is None: - workers = ( - int(os.environ.get("OBJC_DISABLE_INITIALIZE_FORK_SAFETY", "0") == "YES") - if platform.system() == "Darwin" - else 1 - ) + workers = 1 elif workers == -1: workers = (multiprocessing.cpu_count() * 2) + 1 return workers @@ -40,14 +34,24 @@ def serve( if not timeout: timeout = 60 + host = "127.0.0.1" + port = 5003 options = { - "bind": "127.0.0.1:5003", + "bind": f"{host}:{port}", "workers": get_number_of_workers(workers), "worker_class": "uvicorn.workers.UvicornWorker", "timeout": timeout, } - LangflowApplication(app, options).run() + if platform.system() == "Darwin": + # Run using uvicorn on MacOS + import uvicorn + + uvicorn.run(app, host=host, port=port, log_level="info") + else: + from langflow_backend.server import LangflowApplication + + LangflowApplication(app, options).run() def main():