Files
2026-07-13 13:17:40 +08:00

76 lines
2.2 KiB
Python

import enum
import os
import sys
from typing import TypeVar
import aiohttp
from ray._private.utils import validate_socket_filepath
K = TypeVar("K")
V = TypeVar("V")
class ResponseType(enum.Enum):
HTTP = "http"
STREAM = "stream"
WEBSOCKET = "websocket"
def module_logging_filename(
module_name: str, logging_filename: str, extension: str = ""
) -> str:
"""Parse logging_filename = STEM EXTENSION, return STEM _ MODULE_NAME _ EXTENSION.
If logging_filename is empty, return empty string.
If extension is empty, use the extension from logging_filename.
Args:
module_name: Name of the subprocess module, embedded in the output stem.
logging_filename: Original log filename (e.g. ``dashboard.log``).
extension: Override extension. Defaults to the extension of
``logging_filename``.
Returns:
The new filename with the module name embedded between the stem and
extension, or an empty string when ``logging_filename`` is empty.
Example:
module_name = "TestModule"
logging_filename = "dashboard.log"
STEM = "dashboard"
EXTENSION = ".log"
return "dashboard_TestModule.log"
"""
if not logging_filename:
return ""
stem, ext = os.path.splitext(logging_filename)
if not extension:
extension = ext
return f"{stem}_{module_name}{extension}"
def get_socket_path(socket_dir: str, module_name: str) -> str:
socket_path = os.path.join(socket_dir, "dash_" + module_name)
validate_socket_filepath(socket_path)
return socket_path
def get_named_pipe_path(module_name: str, session_name: str) -> str:
return r"\\.\pipe\dash_" + module_name + "_" + session_name
def get_http_session_to_module(
module_name: str, socket_dir: str, session_name: str
) -> aiohttp.ClientSession:
"""
Get the aiohttp http client session to the subprocess module.
"""
if sys.platform == "win32":
named_pipe_path = get_named_pipe_path(module_name, session_name)
connector = aiohttp.NamedPipeConnector(named_pipe_path)
else:
socket_path = get_socket_path(socket_dir, module_name)
connector = aiohttp.UnixConnector(socket_path)
return aiohttp.ClientSession(connector=connector)