@@ -85,11 +85,14 @@ def put(self, item: Union[RequestOutput, EmbeddingRequestOutput,
85
85
return
86
86
self ._queue .put_nowait (item )
87
87
88
- def finish (self , cancelled : bool = False ) -> None :
88
+ def finish (
89
+ self ,
90
+ exception : Optional [Union [BaseException , Type [BaseException ]]] = None ,
91
+ ) -> None :
89
92
if not self ._finished :
90
93
self ._finished = True
91
94
self ._queue .put_nowait (
92
- asyncio . CancelledError if cancelled else STOP_ITERATION )
95
+ exception if exception is not None else STOP_ITERATION )
93
96
94
97
@property
95
98
def finished (self ) -> bool :
@@ -133,14 +136,12 @@ def propagate_exception(self,
133
136
"""Propagate an exception to request streams
134
137
(all if request_id is None)."""
135
138
if request_id is not None :
136
- self ._request_streams [request_id ].put (exc )
137
- self .abort_request (request_id )
139
+ self .abort_request (request_id , exception = exc )
138
140
else :
139
- # NB: list () used here because self.abort_request pops the stream
141
+ # NB: tuple () used here because self.abort_request pops the stream
140
142
# out of self._request_streams, so we can't iterate on it directly
141
- for rid , stream in list (self ._request_streams .items ()):
142
- stream .put (exc )
143
- self .abort_request (rid )
143
+ for rid in tuple (self ._request_streams .keys ()):
144
+ self .abort_request (rid , exception = exc )
144
145
145
146
def process_request_output (self ,
146
147
request_output : Union [RequestOutput ,
@@ -167,14 +168,13 @@ def process_request_output(self,
167
168
168
169
def process_exception (self ,
169
170
request_id : str ,
170
- exception : Exception ,
171
+ exception : BaseException ,
171
172
* ,
172
173
verbose : bool = False ) -> None :
173
174
"""Propagate an exception from the engine."""
174
- self ._request_streams [request_id ].put (exception )
175
175
if verbose :
176
176
logger .info ("Finished request %s." , request_id )
177
- self .abort_request (request_id )
177
+ self .abort_request (request_id , exception = exception )
178
178
179
179
def add_request (self ,
180
180
request_id : str ,
@@ -203,7 +203,8 @@ def add_request(self,
203
203
def abort_request (self ,
204
204
request_id : str ,
205
205
* ,
206
- cancelled : bool = False ,
206
+ exception : Optional [Union [BaseException ,
207
+ Type [BaseException ]]] = None ,
207
208
verbose : bool = False ) -> None :
208
209
"""Abort a request during next background loop iteration."""
209
210
if verbose :
@@ -213,7 +214,7 @@ def abort_request(self,
213
214
214
215
stream = self ._request_streams .pop (request_id , None )
215
216
if stream is not None :
216
- stream .finish (cancelled = cancelled )
217
+ stream .finish (exception = exception )
217
218
218
219
def get_new_and_aborted_requests (self ) -> Tuple [List [Dict ], Set [str ]]:
219
220
"""Get the new requests and finished requests to be
@@ -227,12 +228,14 @@ def get_new_and_aborted_requests(self) -> Tuple[List[Dict], Set[str]]:
227
228
228
229
while not self ._new_requests .empty ():
229
230
stream , new_request = self ._new_requests .get_nowait ()
230
- if stream .request_id in finished_requests :
231
+ request_id = stream .request_id
232
+ if request_id in finished_requests :
231
233
# The request has already been aborted.
232
- stream .finish (cancelled = True )
233
- continue
234
- self ._request_streams [stream .request_id ] = stream
235
- new_requests .append (new_request )
234
+ stream .finish (asyncio .CancelledError )
235
+ finished_requests .discard (request_id )
236
+ else :
237
+ self ._request_streams [request_id ] = stream
238
+ new_requests .append (new_request )
236
239
237
240
return new_requests , finished_requests
238
241
@@ -1015,7 +1018,7 @@ def _abort(self, request_id: str) -> None:
1015
1018
request_id: The unique id of the request.
1016
1019
"""
1017
1020
self ._request_tracker .abort_request (request_id ,
1018
- cancelled = True ,
1021
+ exception = asyncio . CancelledError ,
1019
1022
verbose = self .log_requests )
1020
1023
1021
1024
async def get_model_config (self ) -> ModelConfig :
0 commit comments