MCPcopy Create free account
hub / github.com/apify/crawlee-python / SessionPool

Class SessionPool

src/crawlee/sessions/_session_pool.py:28–253  ·  view source on GitHub ↗

A pool of sessions that are managed, rotated, and persisted based on usage and age. It ensures effective session management by maintaining a pool of sessions and rotating them based on usage count, expiration time, or custom rules. It provides methods to retrieve sessions, manage their

Source from the content-addressed store, hash-verified

26
27@docs_group('Session management')
28class SessionPool:
29 """A pool of sessions that are managed, rotated, and persisted based on usage and age.
30
31 It ensures effective session management by maintaining a pool of sessions and rotating them based on
32 usage count, expiration time, or custom rules. It provides methods to retrieve sessions, manage their
33 lifecycle, and optionally persist the state to enable recovery.
34 """
35
36 def __init__(
37 self,
38 *,
39 max_pool_size: int = 1000,
40 create_session_settings: dict | None = None,
41 create_session_function: CreateSessionFunctionType | None = None,
42 event_manager: EventManager | None = None,
43 persistence_enabled: bool = False,
44 persist_state_kvs_name: str | None = None,
45 persist_state_key: str = 'CRAWLEE_SESSION_POOL_STATE',
46 ) -> None:
47 """Initialize a new instance.
48
49 Args:
50 max_pool_size: Maximum number of sessions to maintain in the pool. You can add more sessions to the pool
51 by using the `add_session` method.
52 create_session_settings: Settings for creating new session instances. If None, default settings will
53 be used. Do not set it if you are providing a `create_session_function`.
54 create_session_function: A callable to create new session instances. If None, a default session settings
55 will be used. Do not set it if you are providing `create_session_settings`.
56 event_manager: The event manager to handle events like persist state.
57 persistence_enabled: Flag to enable or disable state persistence of the pool.
58 persist_state_kvs_name: The name of the `KeyValueStore` used for state persistence.
59 persist_state_key: The key under which the session pool's state is stored in the `KeyValueStore`.
60 """
61 if event_manager:
62 service_locator.set_event_manager(event_manager)
63
64 self._state = RecoverableState(
65 default_state=SessionPoolModel(
66 max_pool_size=max_pool_size,
67 sessions={},
68 ),
69 logger=logger,
70 persistence_enabled=persistence_enabled,
71 persist_state_kvs_name=persist_state_kvs_name,
72 persist_state_key=persist_state_key or 'CRAWLEE_SESSION_POOL_STATE',
73 )
74
75 self._max_pool_size = max_pool_size
76 self._session_settings = create_session_settings or {}
77 self._create_session_function = create_session_function
78 self._persistence_enabled = persistence_enabled
79
80 if self._create_session_function and self._session_settings:
81 raise ValueError('Both `create_session_settings` and `create_session_function` cannot be provided.')
82
83 # Flag to indicate the context state.
84 self._active = False
85

Calls

no outgoing calls