refactor(browser): rename methods and update type hints in BrowserHub for clarity

This commit is contained in:
UncleCode
2025-04-06 18:22:05 +08:00
parent b1693b1c21
commit 591f55edc7

View File

@@ -2,9 +2,9 @@
import hashlib import hashlib
import json import json
import asyncio import asyncio
from typing import Dict, Optional from typing import Dict, Optional, List, Tuple
from .manager import BrowserManager, UnavailableBehavior from .manager import BrowserManager, UnavailableBehavior
from ..async_configs import BrowserConfig from ..async_configs import BrowserConfig, CrawlerRunConfig
from ..async_logger import AsyncLogger from ..async_logger import AsyncLogger
class BrowserHub: class BrowserHub:
@@ -19,7 +19,7 @@ class BrowserHub:
_lock = asyncio.Lock() _lock = asyncio.Lock()
@classmethod @classmethod
async def get_or_create_hub( async def get_browser_manager(
cls, cls,
config: Optional[BrowserConfig] = None, config: Optional[BrowserConfig] = None,
hub_id: Optional[str] = None, hub_id: Optional[str] = None,
@@ -28,10 +28,10 @@ class BrowserHub:
max_browsers_per_config: int = 10, max_browsers_per_config: int = 10,
max_pages_per_browser: int = 5, max_pages_per_browser: int = 5,
initial_pool_size: int = 1, initial_pool_size: int = 1,
page_configs: Optional[list] = None page_configs: Optional[List[Tuple[BrowserConfig, CrawlerRunConfig, int]]] = None
) -> BrowserManager: ) -> BrowserManager:
""" """
Get an existing Browser-Hub or create a new one based on parameters. Get an existing BrowserManager or create a new one based on parameters.
Args: Args:
config: Browser configuration for new hub config: Browser configuration for new hub
@@ -61,7 +61,7 @@ class BrowserHub:
config_hash = cls._hash_config(config) config_hash = cls._hash_config(config)
instance_key = hub_id or f"config:{config_hash}" instance_key = hub_id or f"config:{config_hash}"
if instance_key not in cls._instances: if instance_key not in cls._instances:
cls._instances[instance_key] = await cls._create_browser_hub( cls._instances[instance_key] = await cls._create_browser_manager(
config, config,
logger, logger,
max_browsers_per_config, max_browsers_per_config,
@@ -83,21 +83,22 @@ class BrowserHub:
return cls._instances[instance_key] return cls._instances[instance_key]
@classmethod @classmethod
async def _create_browser_hub( async def _create_browser_manager(
cls, cls,
config: BrowserConfig, config: BrowserConfig,
logger: Optional[AsyncLogger], logger: Optional[AsyncLogger],
max_browsers_per_config: int, max_browsers_per_config: int,
max_pages_per_browser: int, max_pages_per_browser: int,
initial_pool_size: int, initial_pool_size: int,
page_configs: Optional[list] page_configs: Optional[List[Tuple[BrowserConfig, CrawlerRunConfig, int]]] = None
) -> BrowserManager: ) -> BrowserManager:
"""Create a new browser hub with the specified configuration.""" """Create a new browser hub with the specified configuration."""
manager = BrowserManager( manager = BrowserManager(
browser_config=config, browser_config=config,
logger=logger, logger=logger,
unavailable_behavior=UnavailableBehavior.ON_DEMAND, unavailable_behavior=UnavailableBehavior.ON_DEMAND,
max_browsers_per_config=max_browsers_per_config max_browsers_per_config=max_browsers_per_config,
max_pages_per_browser=max_pages_per_browser,
) )
# Initialize the pool # Initialize the pool
@@ -119,7 +120,7 @@ class BrowserHub:
) -> BrowserManager: ) -> BrowserManager:
"""Create a default browser hub with standard settings.""" """Create a default browser hub with standard settings."""
config = BrowserConfig(headless=True) config = BrowserConfig(headless=True)
return await cls._create_browser_hub( return await cls._create_browser_manager(
config, config,
logger, logger,
max_browsers_per_config, max_browsers_per_config,