Make Cancel actually terminate process_fn via SIGTERM#46
Draft
saumya-pailwan wants to merge 3 commits into
Draft
Make Cancel actually terminate process_fn via SIGTERM#46saumya-pailwan wants to merge 3 commits into
saumya-pailwan wants to merge 3 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Previously, cancelling a job only removed it from the Gradio SSE queue. The actual process_fn continued running on the server, consuming GPU/CPU resources and causing cancelled jobs to accumulate.
This change runs process_fn inside a separate subprocess managed by a new JobSupervisor. When a job is cancelled, the subprocess is terminated immediately.
Additionally, all examples now wrap gr.Blocks() and launch() inside if name == "main": This is required because Python's multiprocessing spawn mode re-executes the script in child processes. Without this guard, the child process would attempt to start another Gradio server, preventing the actual job from running correctly.