Skip to content

Commit 8bdf49d

Browse files
authored
fix: fix circular import in KeyValueStore (#805)
### Description - Fix circular imports occurring after using `service_container` in `KeyValueStore` ### Issues - Closes: #804 ### Checklist - [ ] CI passed
1 parent 7aa45b3 commit 8bdf49d

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/crawlee/storages/_key_value_store.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
from typing_extensions import override
66

7-
from crawlee import service_container
87
from crawlee._utils.docs import docs_group
98
from crawlee.base_storage_client._models import KeyValueStoreKeyInfo, KeyValueStoreMetadata
109
from crawlee.events._types import Event, EventPersistStateData
@@ -16,6 +15,7 @@
1615
from crawlee._types import JsonSerializable
1716
from crawlee.base_storage_client import BaseStorageClient
1817
from crawlee.configuration import Configuration
18+
from crawlee.events._event_manager import EventManager
1919

2020
T = TypeVar('T')
2121

@@ -226,12 +226,18 @@ async def _persist_save(self, _event_data: EventPersistStateData | None = None)
226226
for key, value in self._cache.items():
227227
await self.set_value(key, value)
228228

229+
def _get_event_manager(self) -> EventManager:
230+
"""Get event manager from crawlee services."""
231+
from crawlee.service_container import get_event_manager
232+
233+
return get_event_manager() # type: ignore[no-any-return] # Mypy is broken
234+
229235
def _ensure_persist_event(self) -> None:
230236
"""Setup persist state event handling if not already done."""
231237
if self._persist_state_event_started:
232238
return
233239

234-
event_manager = service_container.get_event_manager()
240+
event_manager = self._get_event_manager()
235241
event_manager.on(event=Event.PERSIST_STATE, listener=self._persist_save)
236242
self._persist_state_event_started = True
237243

@@ -242,7 +248,7 @@ def _clear_cache(self) -> None:
242248
def _drop_persist_state_event(self) -> None:
243249
"""Off event_manager listener and drop event status."""
244250
if self._persist_state_event_started:
245-
event_manager = service_container.get_event_manager()
251+
event_manager = self._get_event_manager()
246252
event_manager.off(event=Event.PERSIST_STATE, listener=self._persist_save)
247253
self._persist_state_event_started = False
248254

0 commit comments

Comments
 (0)