Fix leaked semaphore object warning #4132
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request fixes #4131: a "leaked semaphore object" warning appears when aborting with CTRL-C in certain configurations. Semaphores are used internally in
multiprocessing.Queue
which never get cleaned up properly.Scenario 1: pressing CTRL-C in an FastAPI
app
stared via uvicron from the command line with auto-reloadingBecause the
multiprocessing.Queue
objects innative.py
have been created globally they where also instantiated when not in native mode. This PR fixes this by only creating the objects when native mode is activated.Scenario 2: pressing CTRL-C when using
ui.run(native=True, reload=True)
This is still unsolved. I verified that the shutdown/cleanup function for the Queue objects are correct. But the it seems that the pywebview window produces also leaked semaphores when pressing CTRL-C.