|
61 | 61 | UserDefinedErrorHandlerError, |
62 | 62 | UserHandlerTimeoutError, |
63 | 63 | ) |
64 | | -from crawlee.events import EventManager |
65 | 64 | from crawlee.events._types import Event, EventCrawlerStatusData |
66 | 65 | from crawlee.http_clients import ImpitHttpClient |
67 | 66 | from crawlee.router import Router |
|
91 | 90 | PushDataKwargs, |
92 | 91 | ) |
93 | 92 | from crawlee.configuration import Configuration |
| 93 | + from crawlee.events import EventManager |
94 | 94 | from crawlee.http_clients import HttpClient, HttpResponse |
95 | 95 | from crawlee.proxy_configuration import ProxyConfiguration, ProxyInfo |
96 | 96 | from crawlee.request_loaders import RequestManager |
@@ -773,26 +773,31 @@ async def _run_crawler(self) -> None: |
773 | 773 | if local_event_manager is global_event_manager: |
774 | 774 | local_event_manager = None # Avoid entering the same event manager context twice |
775 | 775 |
|
| 776 | + # The event managers are always entered. |
| 777 | + contexts_to_enter: list[Any] = ( |
| 778 | + [global_event_manager, local_event_manager] if local_event_manager else [global_event_manager] |
| 779 | + ) |
| 780 | + |
776 | 781 | # Collect the context managers to be entered. Context managers that are already active are excluded, |
777 | 782 | # as they were likely entered by the caller, who will also be responsible for exiting them. |
778 | | - contexts_to_enter = [ |
779 | | - cm |
780 | | - for cm in ( |
781 | | - global_event_manager, |
782 | | - local_event_manager, |
783 | | - self._snapshotter, |
784 | | - self._statistics, |
785 | | - self._session_pool if self._use_session_pool else None, |
786 | | - self._http_client, |
787 | | - self._crawler_state_rec_task, |
788 | | - *self._additional_context_managers, |
789 | | - ) |
790 | | - if cm and (isinstance(cm, EventManager) or not getattr(cm, 'active', False)) |
791 | | - ] |
| 783 | + contexts_to_enter.extend( |
| 784 | + [ |
| 785 | + cm |
| 786 | + for cm in ( |
| 787 | + self._snapshotter, |
| 788 | + self._statistics, |
| 789 | + self._session_pool if self._use_session_pool else None, |
| 790 | + self._http_client, |
| 791 | + self._crawler_state_rec_task, |
| 792 | + *self._additional_context_managers, |
| 793 | + ) |
| 794 | + if cm and getattr(cm, 'active', False) is False |
| 795 | + ] |
| 796 | + ) |
792 | 797 |
|
793 | 798 | async with AsyncExitStack() as exit_stack: |
794 | 799 | for context in contexts_to_enter: |
795 | | - await exit_stack.enter_async_context(context) # ty: ignore[invalid-argument-type] |
| 800 | + await exit_stack.enter_async_context(context) |
796 | 801 |
|
797 | 802 | await self._autoscaled_pool.run() |
798 | 803 |
|
|
0 commit comments