@@ -36,11 +36,6 @@ class BatchAddRequestsResult(TypedDict):
36
36
unprocessedRequests : list [dict ]
37
37
38
38
39
- def _get_unprocessed_request_from_request (request : dict [str , str ]) -> dict [str , str ]:
40
- relevant_keys = {'url' , 'uniqueKey' , 'method' }
41
- return {key : value for key , value in request .items () if key in relevant_keys }
42
-
43
-
44
39
class RequestQueueClient (ResourceClient ):
45
40
"""Sub-client for manipulating a single request queue."""
46
41
@@ -323,14 +318,11 @@ def batch_add_requests(
323
318
queue .put (batch )
324
319
325
320
processed_requests = list [dict ]()
326
- unprocessed_requests = dict [ str , dict ]()
321
+ unprocessed_requests = list [ dict ]()
327
322
328
323
# Process all batches in the queue sequentially.
329
324
while not queue .empty ():
330
325
request_batch = queue .get ()
331
- # All requests are considered unprocessed unless explicitly mentioned in `processedRequests` response.
332
- for request in request_batch :
333
- unprocessed_requests [request ['uniqueKey' ]] = _get_unprocessed_request_from_request (request )
334
326
335
327
# Send the batch to the API.
336
328
response = self .http_client .call (
@@ -343,13 +335,11 @@ def batch_add_requests(
343
335
344
336
response_parsed = parse_date_fields (pluck_data (response .json ()))
345
337
processed_requests .extend (response_parsed .get ('processedRequests' , []))
346
-
347
- for processed_request in response_parsed .get ('processedRequests' , []):
348
- unprocessed_requests .pop (processed_request ['uniqueKey' ], None )
338
+ unprocessed_requests .extend (response_parsed .get ('unprocessedRequests' , []))
349
339
350
340
return {
351
341
'processedRequests' : processed_requests ,
352
- 'unprocessedRequests' : list ( unprocessed_requests . values ()) ,
342
+ 'unprocessedRequests' : unprocessed_requests ,
353
343
}
354
344
355
345
def batch_delete_requests (self , requests : list [dict ]) -> dict :
@@ -650,39 +640,36 @@ async def _batch_add_requests_worker(
650
640
Return result containing lists of processed and unprocessed requests by the worker.
651
641
"""
652
642
processed_requests = list [dict ]()
653
- unprocessed_requests = dict [ str , dict ]()
643
+ unprocessed_requests = list [ dict ]()
654
644
655
645
while True :
656
646
# Get the next batch from the queue.
657
647
try :
658
648
request_batch = await queue .get ()
659
- # All requests are considered unprocessed unless explicitly mentioned in `processedRequests` response.
660
- for request in request_batch :
661
- unprocessed_requests [request ['uniqueKey' ]] = _get_unprocessed_request_from_request (request )
662
-
663
649
except asyncio .CancelledError :
664
650
break
665
651
666
- # Send the batch to the API.
667
- response = await self .http_client .call (
668
- url = self ._url ('requests/batch' ),
669
- method = 'POST' ,
670
- params = request_params ,
671
- json = list (request_batch ),
672
- timeout_secs = _MEDIUM_TIMEOUT ,
673
- )
674
-
675
- response_parsed = parse_date_fields (pluck_data (response .json ()))
676
- processed_requests .extend (response_parsed .get ('processedRequests' , []))
677
-
678
- for processed_request in response_parsed .get ('processedRequests' , []):
679
- unprocessed_requests .pop (processed_request ['uniqueKey' ], None )
680
-
681
- queue .task_done ()
652
+ try :
653
+ # Send the batch to the API.
654
+ response = await self .http_client .call (
655
+ url = self ._url ('requests/batch' ),
656
+ method = 'POST' ,
657
+ params = request_params ,
658
+ json = list (request_batch ),
659
+ timeout_secs = _MEDIUM_TIMEOUT ,
660
+ )
661
+
662
+ response_parsed = parse_date_fields (pluck_data (response .json ()))
663
+ processed_requests .extend (response_parsed .get ('processedRequests' , []))
664
+ unprocessed_requests .extend (response_parsed .get ('unprocessedRequests' , []))
665
+
666
+ finally :
667
+ # Mark the batch as done whether it succeeded or failed.
668
+ queue .task_done ()
682
669
683
670
return {
684
671
'processedRequests' : processed_requests ,
685
- 'unprocessedRequests' : list ( unprocessed_requests . values ()) ,
672
+ 'unprocessedRequests' : unprocessed_requests ,
686
673
}
687
674
688
675
async def batch_add_requests (
0 commit comments