Skip to content

Commit 4260b08

Browse files
vdusekclaude
andcommitted
test: Fix flaky test_request_reclaim_functionality[shared] integration test
Add retry logic to fetch_next_request() calls in the reclaim test to handle propagation delays in shared request queue access mode. The shared mode may have a brief delay before newly added or reclaimed requests become visible. See: https://github.com/apify/apify-sdk-python/actions/runs/22150409354/job/64039850655?pr=793 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 678b4db commit 4260b08

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

tests/integration/test_request_queue.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,16 @@ async def test_request_unique_key_behavior(request_queue_apify: RequestQueue) ->
208208
)
209209

210210

211+
async def _fetch_next_request_with_retry(rq: RequestQueue, *, max_retries: int = 10, delay: float = 1.0) -> Any:
212+
"""Fetch the next request with retries to handle propagation delays in shared mode."""
213+
for _ in range(max_retries):
214+
request = await rq.fetch_next_request()
215+
if request is not None:
216+
return request
217+
await asyncio.sleep(delay)
218+
return None
219+
220+
211221
async def test_request_reclaim_functionality(request_queue_apify: RequestQueue) -> None:
212222
"""Test request reclaiming for failed processing."""
213223

@@ -218,8 +228,8 @@ async def test_request_reclaim_functionality(request_queue_apify: RequestQueue)
218228
await rq.add_request('https://example.com/test')
219229
Actor.log.info('Added test request')
220230

221-
# Fetch and reclaim the request
222-
request = await rq.fetch_next_request()
231+
# Fetch and reclaim the request (retry to handle propagation delay in shared mode)
232+
request = await _fetch_next_request_with_retry(rq)
223233
assert request is not None, f'request={request}'
224234
Actor.log.info(f'Fetched request: {request.url}')
225235

@@ -231,8 +241,8 @@ async def test_request_reclaim_functionality(request_queue_apify: RequestQueue)
231241
)
232242
Actor.log.info('Request reclaimed successfully')
233243

234-
# Should be able to fetch the same request again
235-
request2 = await rq.fetch_next_request()
244+
# Should be able to fetch the same request again (retry to handle propagation delay in shared mode)
245+
request2 = await _fetch_next_request_with_retry(rq)
236246
assert request2 is not None, f'request2={request2}'
237247
assert request2.url == request.url, (
238248
f'request2.url={request2.url}',

0 commit comments

Comments
 (0)