feat: Raise exception in tests when blocking code is called in event loop (#4293)

Raise exception in tests when blocking code is called in event loop
This commit is contained in:
Christophe Bornet 2024-11-02 17:03:31 +01:00 • committed by GitHub
commit 14b3117d6b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 596 additions and 46 deletions

View file

@ -257,7 +257,7 @@ class DirectoryReader:
async def process_file_async(self, file_path):
try:
file_content = self.read_file_content(file_path)
file_content = await asyncio.to_thread(self.read_file_content, file_path)
except Exception: # noqa: BLE001
logger.exception(f"Error while reading file {file_path}")
return False, f"Could not read {file_path}"

View file

@ -87,6 +87,8 @@ class JavaScriptMIMETypeMiddleware(BaseHTTPMiddleware):
def get_lifespan(*, fix_migration=False, version=None):
telemetry_service = get_telemetry_service()
def _initialize():
initialize_services(fix_migration=fix_migration)
setup_llm_caching()
@ -104,7 +106,7 @@ def get_lifespan(*, fix_migration=False, version=None):
await asyncio.to_thread(_initialize)
all_types_dict = await get_and_cache_all_types_dict(get_settings_service())
await asyncio.to_thread(create_or_update_starter_projects, all_types_dict)
get_telemetry_service().start()
telemetry_service.start()
await asyncio.to_thread(load_flows_from_directory)
yield
except Exception as exc:

View file

@ -40,6 +40,7 @@ class TelemetryService(Service):
self._stopping = False
self.ot = OpenTelemetry(prometheus_enabled=settings_service.settings.prometheus_enabled)
self.architecture: str | None = None
# Check for do-not-track settings
self.do_not_track = (
@ -93,7 +94,8 @@ class TelemetryService(Service):
async def log_package_version(self) -> None:
python_version = ".".join(platform.python_version().split(".")[:2])
version_info = get_version_info()
architecture = platform.architecture()[0]
if self.architecture is None:
self.architecture = (await asyncio.to_thread(platform.architecture))[0]
payload = VersionPayload(
package=version_info["package"].lower(),
version=version_info["version"],
@ -101,7 +103,7 @@ class TelemetryService(Service):
python=python_version,
cache_type=self.settings_service.settings.cache_type,
backend_only=self.settings_service.settings.backend_only,
arch=architecture,
arch=self.architecture,
auto_login=self.settings_service.auth_settings.AUTO_LOGIN,
)
await self._queue_event((self.send_telemetry_data, payload, None))

View file

@ -107,9 +107,9 @@ class TracingService(Service):
async def initialize_tracers(self) -> None:
try:
await self.start()
self._initialize_langsmith_tracer()
self._initialize_langwatch_tracer()
self._initialize_langfuse_tracer()
await asyncio.to_thread(self._initialize_langsmith_tracer)
await asyncio.to_thread(self._initialize_langwatch_tracer)
await asyncio.to_thread(self._initialize_langfuse_tracer)
except Exception: # noqa: BLE001
logger.opt(exception=True).debug("Error initializing tracers")