Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -252,9 +252,13 @@ class BackendProcessor:
|
|
| 252 |
threading.Thread(target=_background, daemon=True).start()
|
| 253 |
|
| 254 |
# Initialize logger early for startup functions
|
| 255 |
-
logging.basicConfig(level=logging.INFO, format='%(asctime)s - ZEROENGINE - %(message)s')
|
| 256 |
logger = logging.getLogger(__name__)
|
| 257 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 258 |
# --- KERNEL INITIALIZATION ---
|
| 259 |
try:
|
| 260 |
from llama_cpp import Llama
|
|
@@ -1875,9 +1879,11 @@ if __name__ == "__main__":
|
|
| 1875 |
logger.info("[CLEANUP] Starting graceful shutdown...")
|
| 1876 |
|
| 1877 |
# Stop passive GC first
|
|
|
|
| 1878 |
stop_passive_gc()
|
| 1879 |
|
| 1880 |
# Cleanup kernel resources
|
|
|
|
| 1881 |
if kernel and kernel.llm:
|
| 1882 |
try:
|
| 1883 |
del kernel.llm
|
|
@@ -1887,20 +1893,27 @@ if __name__ == "__main__":
|
|
| 1887 |
logger.error(f"[CLEANUP] Model cleanup error: {e}")
|
| 1888 |
|
| 1889 |
# Final garbage collection with asyncio cleanup
|
|
|
|
| 1890 |
try:
|
| 1891 |
import asyncio
|
| 1892 |
# Close any remaining event loops
|
| 1893 |
try:
|
|
|
|
|
|
|
|
|
|
| 1894 |
loop = asyncio.get_event_loop()
|
| 1895 |
if loop and not loop.is_closed():
|
|
|
|
| 1896 |
loop.close()
|
|
|
|
| 1897 |
except RuntimeError:
|
| 1898 |
-
|
| 1899 |
-
pass
|
| 1900 |
|
| 1901 |
# Final GC
|
| 1902 |
-
|
| 1903 |
-
|
|
|
|
|
|
|
| 1904 |
logger.info("[CLEANUP] Final GC complete")
|
| 1905 |
except Exception as e:
|
| 1906 |
logger.error(f"[CLEANUP] Final GC error: {e}")
|
|
|
|
| 252 |
threading.Thread(target=_background, daemon=True).start()
|
| 253 |
|
| 254 |
# Initialize logger early for startup functions
|
| 255 |
+
logging.basicConfig(level=logging.INFO, format='%(asctime)s - ZEROENGINE - %(message)s', force=True)
|
| 256 |
logger = logging.getLogger(__name__)
|
| 257 |
|
| 258 |
+
# Suppress asyncio warnings during shutdown
|
| 259 |
+
import warnings
|
| 260 |
+
warnings.filterwarnings("ignore", category=RuntimeWarning, message=".*asyncio.*")
|
| 261 |
+
|
| 262 |
# --- KERNEL INITIALIZATION ---
|
| 263 |
try:
|
| 264 |
from llama_cpp import Llama
|
|
|
|
| 1879 |
logger.info("[CLEANUP] Starting graceful shutdown...")
|
| 1880 |
|
| 1881 |
# Stop passive GC first
|
| 1882 |
+
logger.info("[CLEANUP] Stopping passive GC...")
|
| 1883 |
stop_passive_gc()
|
| 1884 |
|
| 1885 |
# Cleanup kernel resources
|
| 1886 |
+
logger.info("[CLEANUP] Cleaning up kernel resources...")
|
| 1887 |
if kernel and kernel.llm:
|
| 1888 |
try:
|
| 1889 |
del kernel.llm
|
|
|
|
| 1893 |
logger.error(f"[CLEANUP] Model cleanup error: {e}")
|
| 1894 |
|
| 1895 |
# Final garbage collection with asyncio cleanup
|
| 1896 |
+
logger.info("[CLEANUP] Performing final cleanup...")
|
| 1897 |
try:
|
| 1898 |
import asyncio
|
| 1899 |
# Close any remaining event loops
|
| 1900 |
try:
|
| 1901 |
+
loops = asyncio.all_tasks()
|
| 1902 |
+
logger.info(f"[CLEANUP] Found {len(loops)} asyncio tasks")
|
| 1903 |
+
|
| 1904 |
loop = asyncio.get_event_loop()
|
| 1905 |
if loop and not loop.is_closed():
|
| 1906 |
+
logger.info("[CLEANUP] Closing event loop...")
|
| 1907 |
loop.close()
|
| 1908 |
+
logger.info("[CLEANUP] Event loop closed")
|
| 1909 |
except RuntimeError:
|
| 1910 |
+
logger.info("[CLEANUP] No event loop to close")
|
|
|
|
| 1911 |
|
| 1912 |
# Final GC
|
| 1913 |
+
logger.info("[CLEANUP] Running final garbage collection...")
|
| 1914 |
+
for i in range(3):
|
| 1915 |
+
collected = gc.collect(2)
|
| 1916 |
+
logger.info(f"[CLEANUP] GC pass {i+1}: {collected} objects collected")
|
| 1917 |
logger.info("[CLEANUP] Final GC complete")
|
| 1918 |
except Exception as e:
|
| 1919 |
logger.error(f"[CLEANUP] Final GC error: {e}")
|