Use context managers for file operations to prevent resource leaks#3765
Open
yurekami wants to merge 2 commits intolm-sys:mainfrom
Open
Use context managers for file operations to prevent resource leaks#3765yurekami wants to merge 2 commits intolm-sys:mainfrom
yurekami wants to merge 2 commits intolm-sys:mainfrom
Conversation
- Fix duplicate function name bug in controller.py where `worker_api_get_status` was defined twice, causing the test_connection endpoint to shadow the worker status endpoint - Fix PEP 8 violation: use `is None` instead of `== None` in model_worker.py - Fix type comparison: use `isinstance()` instead of `type() ==` in openai_api_server.py for better Pythonic style - Add `/health` endpoint to both controller and openai_api_server for load balancer and orchestration system compatibility 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace `json.load(open(...))` pattern with proper context managers (`with open(...) as f:`) to ensure file handles are always closed, even when exceptions occur. Files fixed: - gradio_web_server.py: API endpoint file loading - monitor/monitor.py: Ban IP list loading - monitor/clean_battle_data.py: Ban IP list loading - monitor/topic_clustering.py: Input file reading - monitor/intersect_conv_file.py: All file operations (read and write) - monitor/tag_openai_moderation.py: Input file reading This prevents: - File handle leaks when json.load() raises exceptions - ResourceWarning in Python 3.x - Potential "too many open files" errors in long-running processes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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.
Summary
Replace
json.load(open(...))anti-pattern with proper context managers to ensure file handles are always closed, even when exceptions occur.Problem
The pattern
json.load(open(file))has several issues:json.load()raises an exception (malformed JSON, etc.), the file handle is never closedChanges
gradio_web_server.pymonitor/monitor.pymonitor/clean_battle_data.pymonitor/topic_clustering.pymonitor/intersect_conv_file.pymonitor/tag_openai_moderation.pyBefore/After
Test Plan
python -m py_compileon all modified filesNote
Additional instances exist in
data/andtrain/directories. This PR focuses on theserve/directory (runtime-critical). Happy to follow up with additional PRs if desired.🤖 Generated with Claude Code