diff --git a/src/backend/langflow/__main__.py b/src/backend/langflow/__main__.py index 385e74932..63c5fe87f 100644 --- a/src/backend/langflow/__main__.py +++ b/src/backend/langflow/__main__.py @@ -2,7 +2,8 @@ import os import sys import time import httpx -from multiprocess import Process, cpu_count # type: ignore +from langflow.utils.util import get_number_of_workers +from multiprocess import Process # type: ignore import platform from pathlib import Path from typing import Optional @@ -20,12 +21,6 @@ from dotenv import load_dotenv app = typer.Typer() -def get_number_of_workers(workers=None): - if workers == -1: - workers = (cpu_count() * 2) + 1 - return workers - - def update_settings( config: str, cache: str, @@ -120,7 +115,7 @@ def serve( "127.0.0.1", help="Host to bind the server to.", envvar="LANGFLOW_HOST" ), workers: int = typer.Option( - 1, help="Number of worker processes.", envvar="LANGFLOW_WORKERS" + -1, help="Number of worker processes.", envvar="LANGFLOW_WORKERS" ), timeout: int = typer.Option(60, help="Worker timeout in seconds."), port: int = typer.Option(7860, help="Port to listen on.", envvar="LANGFLOW_PORT"), @@ -298,7 +293,7 @@ def run_langflow(host, port, log_level, options, app): Run Langflow server on localhost """ try: - if platform.system() in ["Darwin", "Windows"]: + if platform.system() in ["Windows"]: # Run using uvicorn on MacOS and Windows # Windows doesn't support gunicorn # MacOS requires an env variable to be set to use gunicorn diff --git a/src/backend/langflow/utils/util.py b/src/backend/langflow/utils/util.py index 0ee39b337..ce5f03bdf 100644 --- a/src/backend/langflow/utils/util.py +++ b/src/backend/langflow/utils/util.py @@ -8,6 +8,8 @@ from docstring_parser import parse # type: ignore from langflow.template.frontend_node.constants import FORCE_SHOW_FIELDS from langflow.utils import constants +from langflow.utils.logger import logger +from multiprocess import cpu_count def build_template_from_function( @@ -451,3 +453,10 @@ def add_options_to_field( value["options"] = options_map[class_name] value["list"] = True value["value"] = options_map[class_name][0] + + +def get_number_of_workers(workers=None): + if workers == -1 or workers is None: + workers = (cpu_count() * 2) + 1 + logger.debug(f"Number of workers: {workers}") + return workers