# BrowserSessionManager

> **Class** in `langchain_aws`

📖 [View in docs](https://reference.langchain.com/python/langchain-aws/tools/browser_session_manager/BrowserSessionManager)

Manages browser sessions for different threads.

This class maintains separate browser sessions for different threads,
enabling concurrent usage of browsers in multi-threaded environments.
Browsers are created lazily only when needed by tools.

Concurrency protection is also implemented. Each browser session is tied
to a specific thread_id and includes protection against concurrent usage.
When a browser is obtained via `get_async_browser()` or `get_sync_browser()`,
it is marked as "in use", and subsequent attempts to access the same
browser session will raise a RuntimeError until it is released. In general,
different callers should use different thread_ids to avoid concurrency issues.

## Signature

```python
BrowserSessionManager(
    self,
    region: str = 'us-west-2',
    proxy_configuration: Optional[Union[ProxyConfiguration, Dict[str, Any]]] = None,
    extensions: Optional[Sequence[Union[BrowserExtension, Dict[str, Any]]]] = None,
    profile_configuration: Optional[Union[ProfileConfiguration, Dict[str, Any]]] = None,
    session_wait_timeout: float = 10.0,
)
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `region` | `str` | No | AWS region for browser client (default: `'us-west-2'`) |
| `proxy_configuration` | `Optional[Union[ProxyConfiguration, Dict[str, Any]]]` | No | Proxy configuration to pass to browser client (default: `None`) |
| `extensions` | `Optional[Sequence[Union[BrowserExtension, Dict[str, Any]]]]` | No | Extensions configuration to pass to browser client (default: `None`) |
| `profile_configuration` | `Optional[Union[ProfileConfiguration, Dict[str, Any]]]` | No | Profile configuration to pass to browser client (default: `None`) |

## Constructors

```python
__init__(
    self,
    region: str = 'us-west-2',
    proxy_configuration: Optional[Union[ProxyConfiguration, Dict[str, Any]]] = None,
    extensions: Optional[Sequence[Union[BrowserExtension, Dict[str, Any]]]] = None,
    profile_configuration: Optional[Union[ProfileConfiguration, Dict[str, Any]]] = None,
    session_wait_timeout: float = 10.0,
)
```

| Name | Type |
|------|------|
| `region` | `str` |
| `proxy_configuration` | `Optional[Union[ProxyConfiguration, Dict[str, Any]]]` |
| `extensions` | `Optional[Sequence[Union[BrowserExtension, Dict[str, Any]]]]` |
| `profile_configuration` | `Optional[Union[ProfileConfiguration, Dict[str, Any]]]` |
| `session_wait_timeout` | `float` |


## Properties

- `region`
- `proxy_configuration`
- `extensions`
- `profile_configuration`
- `session_wait_timeout`

## Methods

- [`get_async_browser()`](https://reference.langchain.com/python/langchain-aws/tools/browser_session_manager/BrowserSessionManager/get_async_browser)
- [`get_sync_browser()`](https://reference.langchain.com/python/langchain-aws/tools/browser_session_manager/BrowserSessionManager/get_sync_browser)
- [`release_async_browser()`](https://reference.langchain.com/python/langchain-aws/tools/browser_session_manager/BrowserSessionManager/release_async_browser)
- [`release_sync_browser()`](https://reference.langchain.com/python/langchain-aws/tools/browser_session_manager/BrowserSessionManager/release_sync_browser)
- [`close_async_browser()`](https://reference.langchain.com/python/langchain-aws/tools/browser_session_manager/BrowserSessionManager/close_async_browser)
- [`close_sync_browser()`](https://reference.langchain.com/python/langchain-aws/tools/browser_session_manager/BrowserSessionManager/close_sync_browser)
- [`close_all_browsers()`](https://reference.langchain.com/python/langchain-aws/tools/browser_session_manager/BrowserSessionManager/close_all_browsers)

---

[View source on GitHub](https://github.com/langchain-ai/langchain-aws/blob/285069d4f44907e10aaf7743888689ea39c98fe3/libs/aws/langchain_aws/tools/browser_session_manager.py#L21)