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, }