@@ -188,34 +188,46 @@ async def _start_processes(
188
188
maxsize = scheduling_strategy .queued_requests_limit
189
189
)
190
190
responses_queue = manager .Queue ()
191
- per_process_requests_limit = scheduling_strategy .processing_requests_limit // (
192
- scheduling_strategy .processes_limit
191
+
192
+ num_processes = min (
193
+ scheduling_strategy .processes_limit ,
194
+ scheduling_strategy .processing_requests_limit
195
+ )
196
+ requests_limit_split = (scheduling_strategy .processing_requests_limit //
197
+ scheduling_strategy .processes_limit )
198
+ requests_limit_remain = (scheduling_strategy .processing_requests_limit %
199
+ scheduling_strategy .processes_limit )
200
+ process_ids = (id_ for id_ in range (num_processes ))
201
+ process_requests_limits = (
202
+ requests_limit_split + 1
203
+ if i < requests_limit_remain else requests_limit_split
204
+ for i in range (num_processes )
193
205
)
194
206
195
207
futures = []
196
208
loop = asyncio .get_event_loop ()
197
- for process_id in range ( scheduling_strategy . processes_limit ):
209
+ for id_ , requests_limit in zip ( process_ids , process_requests_limits ):
198
210
if scheduling_strategy .processing_mode == "sync" :
199
211
futures .append (
200
212
loop .run_in_executor (
201
213
executor ,
202
214
self .worker .process_loop_synchronous ,
203
215
requests_queue ,
204
216
responses_queue ,
205
- process_id ,
217
+ id_ ,
206
218
)
207
219
)
208
220
elif scheduling_strategy .processing_mode == "async" :
209
- futures .append (
210
- loop .run_in_executor (
211
- executor ,
212
- self .worker .process_loop_asynchronous ,
213
- requests_queue ,
214
- responses_queue ,
215
- per_process_requests_limit ,
216
- process_id ,
221
+ futures .append (
222
+ loop .run_in_executor (
223
+ executor ,
224
+ self .worker .process_loop_asynchronous ,
225
+ requests_queue ,
226
+ responses_queue ,
227
+ requests_limit ,
228
+ id_ ,
229
+ )
217
230
)
218
- )
219
231
else :
220
232
raise ValueError (
221
233
f"Invalid processing mode: { scheduling_strategy .processing_mode } "
0 commit comments