Private
Public Access
add note
This commit is contained in:
@@ -1,3 +1,19 @@
|
|||||||
|
"""Shared AppController I/O pool factory.
|
||||||
|
|
||||||
|
Historical note: an earlier revision of this module registered an
|
||||||
|
``atexit.register(pool.shutdown, wait=False)`` handler here, mirroring
|
||||||
|
the conftest fix at commit 8957c9a5. That approach was reverted because
|
||||||
|
it does not solve the Ctrl+C hang in ``sloppy.py`` when a worker is
|
||||||
|
mid-task (e.g. a long-running Gemini/Anthropic HTTP request): atexit
|
||||||
|
handlers do not fire at all in that scenario, so the process still hangs
|
||||||
|
in ``ThreadPoolExecutor.__del__`` -> ``shutdown(wait=True)`` during
|
||||||
|
finalization.
|
||||||
|
|
||||||
|
The production fix lives in ``AppController.__init__`` as a SIGINT
|
||||||
|
handler that drains the pool and calls ``os._exit(0)``, sidestepping
|
||||||
|
the broken finalization chain. See commit log for details.
|
||||||
|
"""
|
||||||
|
|
||||||
from concurrent.futures import ThreadPoolExecutor
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user