Skip to content

Commit d16b0c6

Browse files
committed
Add stats and tests
1 parent d96c3c4 commit d16b0c6

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

src/apify/storage_clients/_apify/_request_queue_client.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,7 @@ async def get_metadata(self) -> ApifyRequestQueueMetadata:
152152
modified_at=max(response['modifiedAt'], self._metadata.modified_at),
153153
accessed_at=max(response['accessedAt'], self._metadata.accessed_at),
154154
had_multiple_clients=response['hadMultipleClients'] or self._metadata.had_multiple_clients,
155-
stats=RequestQueueStats.model_validate({}),
156-
# TODO: update after https://github.com/apify/apify-sdk-python/pull/552
155+
stats=RequestQueueStats.model_validate(response['stats'], by_alias=True),
157156
)
158157

159158
@classmethod

tests/integration/test_request_queue.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
import asyncio
4-
from typing import TYPE_CHECKING
4+
from typing import TYPE_CHECKING, cast
55

66
import pytest
77

@@ -14,6 +14,7 @@
1414
from crawlee.storages import RequestQueue
1515

1616
from .conftest import MakeActorFunction, RunActorFunction
17+
from apify.storage_clients._apify._request_queue_client import ApifyRequestQueueMetadata
1718

1819

1920
async def test_add_and_fetch_requests(
@@ -1278,3 +1279,28 @@ async def test_request_queue_not_had_multiple_clients(
12781279
api_response = await api_client.get()
12791280
assert api_response
12801281
assert api_response['hadMultipleClients'] is False
1282+
1283+
1284+
async def test_request_queue_has_stats(request_queue_force_cloud: RequestQueue) -> None:
1285+
"""Test that Apify based request queue has stats in metadata."""
1286+
1287+
add_request_count = 3
1288+
read_request_count = 2
1289+
1290+
# Two calls to API to create situation where different `client_key` can set `had_multiple_clients` to True
1291+
1292+
await request_queue_force_cloud.add_requests(
1293+
[Request.from_url(f'http://example.com/{i}') for i in range(add_request_count)]
1294+
)
1295+
for _ in range(read_request_count):
1296+
await request_queue_force_cloud.get_request(Request.from_url('http://example.com/1').unique_key)
1297+
1298+
# Wait for stats to become stable
1299+
await asyncio.sleep(10)
1300+
1301+
metadata = await request_queue_force_cloud.get_metadata()
1302+
1303+
assert hasattr(metadata, 'stats')
1304+
apify_metadata = cast('ApifyRequestQueueMetadata', metadata)
1305+
assert apify_metadata.stats.read_count == read_request_count
1306+
assert apify_metadata.stats.write_count == add_request_count # Added one request

0 commit comments

Comments
 (0)