Round 5 fixes: workerpool resize shrink, validator lazy session close, plugin config error handling, 422 message detail, tests
This commit is contained in:
@@ -84,19 +84,12 @@ class AsyncWorkerPool:
|
||||
asyncio.create_task(self._worker_loop(i), name=f"{self.name}-worker-{i}")
|
||||
)
|
||||
elif new_worker_count < self.worker_count:
|
||||
for _ in range(self.worker_count - new_worker_count):
|
||||
await self._queue.put(None)
|
||||
await asyncio.sleep(0)
|
||||
still_running = []
|
||||
for w in self._workers:
|
||||
if w.done():
|
||||
try:
|
||||
await w
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
else:
|
||||
still_running.append(w)
|
||||
self._workers = still_running
|
||||
excess_workers = self._workers[new_worker_count:]
|
||||
self._workers = self._workers[:new_worker_count]
|
||||
for w in excess_workers:
|
||||
w.cancel()
|
||||
if excess_workers:
|
||||
await asyncio.gather(*excess_workers, return_exceptions=True)
|
||||
self.worker_count = new_worker_count
|
||||
|
||||
async def _worker_loop(self, worker_id: int) -> None:
|
||||
|
||||
Reference in New Issue
Block a user