From 99dbf3006b30dd77a0f650b25d9b1c8071f25e1e Mon Sep 17 00:00:00 2001 From: Shantanu <12621235+hauntsaninja@users.noreply.github.com> Date: Sat, 25 Jan 2025 09:28:06 -0800 Subject: [PATCH] Cache executor to avoid hitting open file limits (#4560) Fixes #4504, fixes #3251 --- src/blackd/__init__.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/blackd/__init__.py b/src/blackd/__init__.py index d51b9ce..86309da 100644 --- a/src/blackd/__init__.py +++ b/src/blackd/__init__.py @@ -2,7 +2,7 @@ import logging from concurrent.futures import Executor, ProcessPoolExecutor from datetime import datetime, timezone -from functools import partial +from functools import cache, partial from multiprocessing import freeze_support try: @@ -85,12 +85,16 @@ def main(bind_host: str, bind_port: int) -> None: web.run_app(app, host=bind_host, port=bind_port, handle_signals=True, print=None) +@cache +def executor() -> Executor: + return ProcessPoolExecutor() + + def make_app() -> web.Application: app = web.Application( middlewares=[cors(allow_headers=(*BLACK_HEADERS, "Content-Type"))] ) - executor = ProcessPoolExecutor() - app.add_routes([web.post("/", partial(handle, executor=executor))]) + app.add_routes([web.post("/", partial(handle, executor=executor()))]) return app