From 5169b95ccfff61d46db67efecc246a376413ef5b Mon Sep 17 00:00:00 2001 From: vangheem Date: Wed, 4 Sep 2024 15:18:50 -0400 Subject: [PATCH 1/2] Do not block event loop when running plugin code --- CHANGELOG.md | 7 ++++++- unstructured_platform_plugins/__version__.py | 2 +- unstructured_platform_plugins/etl_uvicorn/api_generator.py | 3 ++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3eb55d1..c90324a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,15 @@ +## 0.0.4 + +### Fixes + +* Do not block event loop when running plugin code + ## 0.0.3 ### Features * **OTEL middleware added** - ## 0.0.2 ### Enhancements diff --git a/unstructured_platform_plugins/__version__.py b/unstructured_platform_plugins/__version__.py index 4dc74f8..cffb4f5 100644 --- a/unstructured_platform_plugins/__version__.py +++ b/unstructured_platform_plugins/__version__.py @@ -1 +1 @@ -__version__ = "0.0.3" # pragma: no cover +__version__ = "0.0.4" # pragma: no cover diff --git a/unstructured_platform_plugins/etl_uvicorn/api_generator.py b/unstructured_platform_plugins/etl_uvicorn/api_generator.py index 6b7d384..b3b9dae 100644 --- a/unstructured_platform_plugins/etl_uvicorn/api_generator.py +++ b/unstructured_platform_plugins/etl_uvicorn/api_generator.py @@ -1,6 +1,7 @@ import asyncio import hashlib import inspect +from functools import partial import json import logging from typing import Any, Callable, Optional @@ -33,7 +34,7 @@ async def invoke_func(func: Callable, kwargs: Optional[dict[str, Any]] = None) - if inspect.iscoroutinefunction(func): return await func(**kwargs) else: - return func(**kwargs) + return await asyncio.get_event_loop().run_in_executor(None, partial(func, **kwargs)) def check_precheck_func(precheck_func: Callable): From 439b9e127c83ba4b86defe0fadeaea98201a3294 Mon Sep 17 00:00:00 2001 From: vangheem Date: Wed, 4 Sep 2024 15:20:22 -0400 Subject: [PATCH 2/2] lint --- unstructured_platform_plugins/etl_uvicorn/api_generator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unstructured_platform_plugins/etl_uvicorn/api_generator.py b/unstructured_platform_plugins/etl_uvicorn/api_generator.py index b3b9dae..cac8e4a 100644 --- a/unstructured_platform_plugins/etl_uvicorn/api_generator.py +++ b/unstructured_platform_plugins/etl_uvicorn/api_generator.py @@ -1,9 +1,9 @@ import asyncio import hashlib import inspect -from functools import partial import json import logging +from functools import partial from typing import Any, Callable, Optional from fastapi import FastAPI, status