mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-20 03:12:15 +00:00
chore: Add Sentry to native Python runner (#19082)
This commit is contained in:
49
packages/@n8n/task-runner-python/src/health_check_server.py
Normal file
49
packages/@n8n/task-runner-python/src/health_check_server.py
Normal file
@@ -0,0 +1,49 @@
|
||||
import asyncio
|
||||
import errno
|
||||
import logging
|
||||
from typing import Optional
|
||||
|
||||
from src.config.health_check_config import HealthCheckConfig
|
||||
|
||||
HEALTH_CHECK_RESPONSE = (
|
||||
b"HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nContent-Length: 2\r\n\r\nOK"
|
||||
)
|
||||
|
||||
|
||||
class HealthCheckServer:
|
||||
def __init__(self):
|
||||
self.server: Optional[asyncio.Server] = None
|
||||
self.logger = logging.getLogger(__name__)
|
||||
|
||||
async def start(self, config: HealthCheckConfig) -> None:
|
||||
try:
|
||||
self.server = await asyncio.start_server(
|
||||
self._handle_request, config.host, config.port
|
||||
)
|
||||
self.logger.info(
|
||||
f"Health check server listening on {config.host}, port {config.port}"
|
||||
)
|
||||
except OSError as e:
|
||||
if e.errno == errno.EADDRINUSE:
|
||||
raise OSError(f"Port {config.port} is already in use") from e
|
||||
else:
|
||||
raise
|
||||
|
||||
async def stop(self) -> None:
|
||||
if self.server:
|
||||
self.server.close()
|
||||
await self.server.wait_closed()
|
||||
self.server = None
|
||||
self.logger.info("Health check server stopped")
|
||||
|
||||
async def _handle_request(
|
||||
self, _reader: asyncio.StreamReader, writer: asyncio.StreamWriter
|
||||
) -> None:
|
||||
try:
|
||||
writer.write(HEALTH_CHECK_RESPONSE)
|
||||
await writer.drain()
|
||||
except Exception:
|
||||
pass
|
||||
finally:
|
||||
writer.close()
|
||||
await writer.wait_closed()
|
||||
Reference in New Issue
Block a user