@@ -130,17 +130,15 @@ async def run(
130
130
futures , queues , stop_event = await self ._start_processes (
131
131
manager , executor , scheduling_strategy
132
132
)
133
- run_info , requests_iter , times_iter = self ._run_setup (
133
+ run_info , requests_iter = self ._run_setup (
134
134
futures , scheduling_strategy , max_number , max_duration
135
135
)
136
136
137
137
# Add some initial requests to the queue
138
138
requests_iter = self ._add_requests (
139
139
requests_iter ,
140
140
queues .requests ,
141
- times_iter ,
142
141
run_info ,
143
- loop_limit = run_info .strategy .queued_requests_limit ,
144
142
)
145
143
# Wait for the test to start
146
144
await asyncio .sleep (time .time () - scheduling_strategy .start_time )
@@ -171,7 +169,6 @@ async def run(
171
169
requests_iter = self ._add_requests (
172
170
requests_iter ,
173
171
queues .requests ,
174
- times_iter ,
175
172
run_info ,
176
173
)
177
174
await asyncio .sleep (0 ) # enable requests to start
@@ -244,6 +241,7 @@ async def _start_processes(
244
241
queues ,
245
242
scheduling_strategy ,
246
243
stop_event ,
244
+ False , # TODO: Make configurable
247
245
requests_limit ,
248
246
id_ ,
249
247
num_processes ,
@@ -260,9 +258,8 @@ def _run_setup(
260
258
scheduling_strategy : SchedulingStrategy ,
261
259
max_number : Optional [int ],
262
260
max_duration : Optional [float ],
263
- ) -> tuple [SchedulerRunInfo , Iterator [Any ], Iterator [ float ] ]:
261
+ ) -> tuple [SchedulerRunInfo , Iterator [Any ]]:
264
262
requests_iter = iter (self .request_loader )
265
- times_iter = iter (scheduling_strategy .request_times ())
266
263
end_time = scheduling_strategy .start_time + (max_duration or math .inf )
267
264
end_number = max_number or math .inf
268
265
@@ -288,42 +285,39 @@ def _run_setup(
288
285
strategy = scheduling_strategy ,
289
286
)
290
287
291
- return info , requests_iter , times_iter
288
+ return info , requests_iter
292
289
293
290
def _add_requests (
294
291
self ,
295
292
requests_iter : Optional [Iterator [Any ]],
296
293
requests_queue : Queue [WorkerProcessRequest [RequestT , ResponseT ]],
297
- times_iter : Iterator [float ],
298
294
run_info : SchedulerRunInfo ,
299
- loop_limit : Optional [int ] = None ,
300
295
) -> Optional [Iterator [Any ]]:
301
296
if requests_iter is not None :
302
297
try :
303
298
added_count = 0
304
299
300
+ if time .time () >= run_info .end_time :
301
+ raise StopIteration
302
+
305
303
while not requests_queue .full () and added_count < (
306
- loop_limit or settings .max_add_requests_per_loop
304
+ run_info .strategy .queued_requests_limit
305
+ or settings .max_add_requests_per_loop
307
306
):
308
307
if run_info .created_requests >= run_info .end_number :
309
308
raise StopIteration
310
309
311
- if (
312
- next (times_iter ) >= run_info .end_time
313
- or time .time () >= run_info .end_time
314
- ):
315
- raise StopIteration
316
-
317
- work_req = WorkerProcessRequest [RequestT , ResponseT ](
318
- request = next (requests_iter ),
310
+ session = next (requests_iter )
311
+ work_req = WorkerProcessRequest (
312
+ session = session ,
319
313
timeout_time = run_info .end_time ,
320
314
queued_time = time .time (),
321
315
)
322
316
requests_queue .put (work_req )
323
317
324
- run_info .created_requests += 1
325
- run_info .queued_requests += 1
326
- added_count += 1
318
+ run_info .created_requests += len ( session )
319
+ run_info .queued_requests += len ( session )
320
+ added_count += len ( session )
327
321
except StopIteration :
328
322
# we've reached the limit number, limit time, or exhausted the requests
329
323
# set to None to stop adding more and tell the loop no more requests
0 commit comments