@@ -49,11 +49,21 @@ def encode_base64(data: bytes) -> str:
4949 return base64 .b64encode (data ).decode ('utf-8' )
5050
5151
52+ async def wait_for_sitemap_loader_not_empty (sitemap_loader : SitemapRequestLoader ) -> None :
53+ """
54+ Wait for the sitemap loader to have at least one URL available for processing.
55+ """
56+
57+ while await sitemap_loader .is_empty () and not await sitemap_loader .is_finished (): # noqa: ASYNC110
58+ await asyncio .sleep (0.1 )
59+
60+
5261async def test_sitemap_traversal (server_url : URL , http_client : HttpClient ) -> None :
5362 sitemap_url = (server_url / 'sitemap.xml' ).with_query (base64 = encode_base64 (BASIC_SITEMAP .encode ()))
5463 sitemap_loader = SitemapRequestLoader ([str (sitemap_url )], http_client = http_client )
64+
5565 # Give time to load
56- await asyncio .sleep ( 0. 2 )
66+ await asyncio .wait_for ( wait_for_sitemap_loader_not_empty ( sitemap_loader ), timeout = 2 )
5767
5868 while not await sitemap_loader .is_finished ():
5969 item = await sitemap_loader .fetch_next_request ()
@@ -70,8 +80,9 @@ async def test_sitemap_traversal(server_url: URL, http_client: HttpClient) -> No
7080async def test_is_empty_does_not_depend_on_fetch_next_request (server_url : URL , http_client : HttpClient ) -> None :
7181 sitemap_url = (server_url / 'sitemap.xml' ).with_query (base64 = encode_base64 (BASIC_SITEMAP .encode ()))
7282 sitemap_loader = SitemapRequestLoader ([str (sitemap_url )], http_client = http_client )
83+
7384 # Give time to load
74- await asyncio .sleep ( 0. 2 )
85+ await asyncio .wait_for ( wait_for_sitemap_loader_not_empty ( sitemap_loader ), timeout = 2 )
7586
7687 items = []
7788
@@ -95,7 +106,7 @@ async def test_abort_sitemap_loading(server_url: URL, http_client: HttpClient) -
95106 sitemap_url = (server_url / 'sitemap.xml' ).with_query (base64 = encode_base64 (BASIC_SITEMAP .encode ()))
96107 sitemap_loader = SitemapRequestLoader ([str (sitemap_url )], max_buffer_size = 2 , http_client = http_client )
97108 # Give time to load
98- await asyncio .sleep ( 0. 2 )
109+ await asyncio .wait_for ( wait_for_sitemap_loader_not_empty ( sitemap_loader ), timeout = 2 )
99110
100111 item = await sitemap_loader .fetch_next_request ()
101112 assert item is not None
@@ -135,7 +146,8 @@ async def test_data_persistence_for_sitemap_loading(
135146 sitemap_url = (server_url / 'sitemap.xml' ).with_query (base64 = encode_base64 (BASIC_SITEMAP .encode ()))
136147 persist_key = 'data_persist_state'
137148 sitemap_loader = SitemapRequestLoader ([str (sitemap_url )], http_client = http_client , persist_state_key = persist_key )
138- await asyncio .sleep (0.2 )
149+ # Give time to load
150+ await asyncio .wait_for (wait_for_sitemap_loader_not_empty (sitemap_loader ), timeout = 2 )
139151
140152 await sitemap_loader .close ()
141153
@@ -153,7 +165,8 @@ async def test_recovery_data_persistence_for_sitemap_loading(
153165 sitemap_url = (server_url / 'sitemap.xml' ).with_query (base64 = encode_base64 (BASIC_SITEMAP .encode ()))
154166 persist_key = 'recovery_persist_state'
155167 sitemap_loader = SitemapRequestLoader ([str (sitemap_url )], http_client = http_client , persist_state_key = persist_key )
156- await asyncio .sleep (0.2 )
168+ # Give time to load
169+ await asyncio .wait_for (wait_for_sitemap_loader_not_empty (sitemap_loader ), timeout = 2 )
157170
158171 item = await sitemap_loader .fetch_next_request ()
159172
@@ -168,7 +181,8 @@ async def test_recovery_data_persistence_for_sitemap_loading(
168181 next_item_in_kvs = state_data ['urlQueue' ][0 ]
169182
170183 sitemap_loader = SitemapRequestLoader ([str (sitemap_url )], http_client = http_client , persist_state_key = persist_key )
171- await asyncio .sleep (0.2 )
184+ # Give time to load
185+ await asyncio .wait_for (wait_for_sitemap_loader_not_empty (sitemap_loader ), timeout = 2 )
172186 item = await sitemap_loader .fetch_next_request ()
173187
174188 assert item is not None
0 commit comments