@@ -335,33 +335,33 @@ async def add_batch_of_requests(
335335 )
336336 )
337337
338- if insert_values :
339- if forefront :
340- # If the request already exists in the database, we update the sequence_number by shifting request
341- # to the left.
342- upsert_stmt = self ._build_upsert_stmt (
343- self ._ITEM_TABLE ,
344- insert_values ,
345- update_columns = ['sequence_number' ],
346- conflict_cols = ['request_id' , 'request_queue_id' ],
347- )
348- result = await session .execute (upsert_stmt )
349- else :
350- # If the request already exists in the database, we ignore this request when inserting.
351- insert_stmt_with_ignore = self ._build_insert_stmt_with_ignore (self ._ITEM_TABLE , insert_values )
352- result = await session .execute (insert_stmt_with_ignore )
338+ try :
339+ if insert_values :
340+ if forefront :
341+ # If the request already exists in the database, we update the sequence_number
342+ # by shifting request to the left.
343+ upsert_stmt = self ._build_upsert_stmt (
344+ self ._ITEM_TABLE ,
345+ insert_values ,
346+ update_columns = ['sequence_number' ],
347+ conflict_cols = ['request_id' , 'request_queue_id' ],
348+ )
349+ result = await session .execute (upsert_stmt )
350+ else :
351+ # If the request already exists in the database, we ignore this request when inserting.
352+ insert_stmt_with_ignore = self ._build_insert_stmt_with_ignore (self ._ITEM_TABLE , insert_values )
353+ result = await session .execute (insert_stmt_with_ignore )
353354
354- result = cast ('CursorResult' , result ) if not isinstance (result , CursorResult ) else result
355- approximate_new_request += result .rowcount
355+ result = cast ('CursorResult' , result ) if not isinstance (result , CursorResult ) else result
356+ approximate_new_request += result .rowcount
356357
357- await self ._add_buffer_record (
358- session ,
359- update_modified_at = True ,
360- delta_pending_request_count = approximate_new_request ,
361- delta_total_request_count = approximate_new_request ,
362- )
358+ await self ._add_buffer_record (
359+ session ,
360+ update_modified_at = True ,
361+ delta_pending_request_count = approximate_new_request ,
362+ delta_total_request_count = approximate_new_request ,
363+ )
363364
364- try :
365365 await session .commit ()
366366 processed_requests .extend (transaction_processed_requests )
367367 except SQLAlchemyError as e :
@@ -433,7 +433,7 @@ async def fetch_next_request(self) -> Request | None:
433433
434434 async with self .get_session (with_simple_commit = True ) as session :
435435 # We use the `skip_locked` database mechanism to prevent the 'interception' of requests by another client
436- if dialect == 'postgresql' :
436+ if dialect in ( 'postgresql' , 'mysql' ) :
437437 stmt = stmt .with_for_update (skip_locked = True )
438438 result = await session .execute (stmt )
439439 requests_db = result .scalars ().all ()
0 commit comments