Spaces:
Sleeping
Sleeping
A newer version of the Gradio SDK is available: 6.26.0
π§ UI Responsiveness Fixes Applied
Commit: 8d9a0554c8ecc850ebc54ab08b564d0bc0790511
Issues Fixed
1. β Demo Load Freezing Tabs
- Problem:
demo.load()was callingrefresh_analytics()on page load, blocking UI thread - Solution: Removed
demo.load()blocking call - File:
app.py(line ~555) - Result: Tabs are now immediately responsive on load
2. β Chatbot Format Mismatch with Gradio 6.14.0
- Problem: Using old dict format
{"role": "user", "content": "..."}for chat history - Solution: Updated to Gradio 6.14.0 format:
[[user_msg, bot_msg], ...](list of lists) - File:
app.py-chatbot_query()function - Result: Chatbot now works correctly with Gradio 6.14.0
3. β Database Queries Blocking UI
- Problem: Database queries (
query_database(),chatbot_query(),refresh_analytics()) are synchronous and can block event loop - Solution: Added timeout handling to all queries (15-30 second limits)
- Files:
database.py-run_query(),get_vehicles_by_state(),get_hourly_traffic(),get_top_plates(),get_suspicious_vehicles(),health_check() - Result: Queries that hang no longer freeze the UI
4. β HuggingFace API Timeout Crashing Event Loop
- Problem:
client.chat_completion()could timeout and crash without fallback - Solution: Added try/except around API call with fallback to rule-based SQL generation
- File:
database.py-ask_llm()function - Result: If Mistral API times out, app falls back to rule-based queries instead of crashing
5. β SQL Columns Missing (Time Column)
- Problem:
save_detection()trying to insert into non-existent "time" column - Database schema has:
timestamp,date,hour,day- NOT "time" - Solution:
- Extract hour from time string and use existing "hour" column
- Extract day of week from date and use existing "day" column
- Use NOW() for timestamp field
- File:
database.py-save_detection()function - Result: Detections now save correctly without column mapping errors
6. β Cannot Navigate to Other Tabs
- Root Cause: Blocking operations on page load and response timeout
- Solutions Applied:
- Removed demo.load() that was blocking
- Added 15-30 second timeouts to all queries
- Database queries now fail gracefully instead of hanging
- UI remains responsive even during long operations
- Result: All tabs are now clickable and responsive
Technical Details
Timeout Settings
- API Calls: 30 second timeout (Mistral LLM)
- Analytics Queries: 15 second timeout
- Health Check: 10 second timeout
- Fallback: If timeout, use default safe query or rule-based SQL
Database Connection Pool
All queries now set statement_timeout at connection level:
SET statement_timeout = 15000 -- milliseconds
Chatbot History Format
Old (incorrect):
history = [
{"role": "user", "content": "..."},
{"role": "assistant", "content": "..."}
]
New (Gradio 6.14.0 compatible):
history = [
["user message", "bot response"],
["another user msg", "another bot response"]
]
Testing Checklist
- Load HF Space in browser
- All tabs clickable immediately (Detection, NLP Query, AI Assistant, Analytics)
- Click Detection tab β upload image β detect (should work)
- Click NLP Database Query tab β enter query β search (should work or timeout gracefully)
- Click AI Assistant tab β type message β send (should work)
- Click Analytics tab β click Refresh (should work or show error, not freeze)
- Switch between tabs rapidly (should not freeze)
- Long-running queries should timeout gracefully after 15-30 seconds
Files Modified
- app.py - Removed blocking demo.load(), fixed Chatbot format
- database.py - Added timeout handling, fixed save_detection()
Next Steps
- Verify HF Space is updated with new code
- Test all tabs navigate smoothly
- Test long-running queries (should timeout gracefully)
- If still issues, check HF Spaces logs for specific errors