fix: minor optimizations, trying to fix #333
This commit is contained in:
90
app.py
90
app.py
@@ -13,11 +13,12 @@ import redis
|
||||
import socket
|
||||
from urllib.parse import urlparse
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
|
||||
# Parse log level from environment as early as possible, default to INFO for visibility
|
||||
log_level_str = os.getenv("LOG_LEVEL", "INFO").upper()
|
||||
log_level = getattr(logging, log_level_str, logging.INFO)
|
||||
log_level_str = os.getenv("LOG_LEVEL", "WARNING").upper()
|
||||
log_level = getattr(logging, log_level_str, logging.WARNING)
|
||||
|
||||
# Set up a very basic logging config immediately, so early logs (including import/migration errors) are visible
|
||||
logging.basicConfig(
|
||||
@@ -52,30 +53,25 @@ if _umask_value:
|
||||
|
||||
|
||||
# Import and initialize routes (this will start the watch manager)
|
||||
from routes.auth.credentials import router as credentials_router
|
||||
from routes.auth.auth import router as auth_router
|
||||
from routes.content.album import router as album_router
|
||||
from routes.content.artist import router as artist_router
|
||||
from routes.content.track import router as track_router
|
||||
from routes.content.playlist import router as playlist_router
|
||||
from routes.content.bulk_add import router as bulk_add_router
|
||||
from routes.core.search import router as search_router
|
||||
from routes.core.history import router as history_router
|
||||
from routes.system.progress import router as prgs_router
|
||||
from routes.system.config import router as config_router
|
||||
from routes.auth.credentials import router as credentials_router # noqa: E402
|
||||
from routes.auth.auth import router as auth_router # noqa: E402
|
||||
from routes.content.album import router as album_router # noqa: E402
|
||||
from routes.content.artist import router as artist_router # noqa: E402
|
||||
from routes.content.track import router as track_router # noqa: E402
|
||||
from routes.content.playlist import router as playlist_router # noqa: E402
|
||||
from routes.content.bulk_add import router as bulk_add_router # noqa: E402
|
||||
from routes.core.search import router as search_router # noqa: E402
|
||||
from routes.core.history import router as history_router # noqa: E402
|
||||
from routes.system.progress import router as prgs_router # noqa: E402
|
||||
from routes.system.config import router as config_router # noqa: E402
|
||||
|
||||
|
||||
# Import Celery configuration and manager
|
||||
from routes.utils.celery_manager import celery_manager
|
||||
from routes.utils.celery_config import REDIS_URL
|
||||
from routes.utils.celery_config import REDIS_URL # noqa: E402
|
||||
|
||||
# Import authentication system
|
||||
from routes.auth import AUTH_ENABLED
|
||||
from routes.auth.middleware import AuthMiddleware
|
||||
|
||||
# Import watch manager controls (start/stop) without triggering side effects
|
||||
from routes.utils.watch.manager import start_watch_manager, stop_watch_manager
|
||||
|
||||
|
||||
|
||||
# Configure application-wide logging
|
||||
@@ -136,9 +132,9 @@ def setup_logging():
|
||||
"routes.utils.celery_manager",
|
||||
"routes.utils.celery_tasks",
|
||||
"routes.utils.watch",
|
||||
"uvicorn", # General Uvicorn logger
|
||||
"uvicorn.access", # Uvicorn access logs
|
||||
"uvicorn.error", # Uvicorn error logs
|
||||
"uvicorn", # General Uvicorn logger
|
||||
"uvicorn.access", # Uvicorn access logs
|
||||
"uvicorn.error", # Uvicorn error logs
|
||||
"spotizerr",
|
||||
]:
|
||||
logger = logging.getLogger(logger_name)
|
||||
@@ -152,7 +148,6 @@ def setup_logging():
|
||||
|
||||
def check_redis_connection():
|
||||
"""Check if Redis is available and accessible"""
|
||||
from routes.utils.celery_config import REDIS_URL
|
||||
|
||||
if not REDIS_URL:
|
||||
logging.error("REDIS_URL is not configured. Please check your environment.")
|
||||
@@ -199,7 +194,9 @@ async def lifespan(app: FastAPI):
|
||||
# Startup
|
||||
setup_logging()
|
||||
effective_level = logging.getLevelName(log_level)
|
||||
logging.getLogger(__name__).info(f"Logging system fully initialized (lifespan startup). Effective log level: {effective_level}")
|
||||
logging.getLogger(__name__).info(
|
||||
f"Logging system fully initialized (lifespan startup). Effective log level: {effective_level}"
|
||||
)
|
||||
|
||||
# Run migrations before initializing services
|
||||
try:
|
||||
@@ -226,8 +223,19 @@ async def lifespan(app: FastAPI):
|
||||
try:
|
||||
from routes.utils.celery_manager import celery_manager
|
||||
|
||||
celery_manager.start()
|
||||
logging.info("Celery workers started successfully")
|
||||
start_workers = os.getenv("START_EMBEDDED_WORKERS", "true").lower() in (
|
||||
"1",
|
||||
"true",
|
||||
"yes",
|
||||
"on",
|
||||
)
|
||||
if start_workers:
|
||||
celery_manager.start()
|
||||
logging.info("Celery workers started successfully")
|
||||
else:
|
||||
logging.info(
|
||||
"START_EMBEDDED_WORKERS is false; skipping embedded Celery workers startup."
|
||||
)
|
||||
except Exception as e:
|
||||
logging.error(f"Failed to start Celery workers: {e}")
|
||||
|
||||
@@ -257,8 +265,19 @@ async def lifespan(app: FastAPI):
|
||||
try:
|
||||
from routes.utils.celery_manager import celery_manager
|
||||
|
||||
celery_manager.stop()
|
||||
logging.info("Celery workers stopped")
|
||||
start_workers = os.getenv("START_EMBEDDED_WORKERS", "true").lower() in (
|
||||
"1",
|
||||
"true",
|
||||
"yes",
|
||||
"on",
|
||||
)
|
||||
if start_workers:
|
||||
celery_manager.stop()
|
||||
logging.info("Celery workers stopped")
|
||||
else:
|
||||
logging.info(
|
||||
"START_EMBEDDED_WORKERS is false; no embedded Celery workers to stop."
|
||||
)
|
||||
except Exception as e:
|
||||
logging.error(f"Error stopping Celery workers: {e}")
|
||||
|
||||
@@ -295,17 +314,6 @@ def create_app():
|
||||
logging.warning(f"Auth system initialization failed or unavailable: {e}")
|
||||
|
||||
# Register routers with URL prefixes
|
||||
from routes.auth.auth import router as auth_router
|
||||
from routes.system.config import router as config_router
|
||||
from routes.core.search import router as search_router
|
||||
from routes.auth.credentials import router as credentials_router
|
||||
from routes.content.album import router as album_router
|
||||
from routes.content.track import router as track_router
|
||||
from routes.content.playlist import router as playlist_router
|
||||
from routes.content.bulk_add import router as bulk_add_router
|
||||
from routes.content.artist import router as artist_router
|
||||
from routes.system.progress import router as prgs_router
|
||||
from routes.core.history import router as history_router
|
||||
|
||||
app.include_router(auth_router, prefix="/api/auth", tags=["auth"])
|
||||
|
||||
@@ -449,4 +457,6 @@ if __name__ == "__main__":
|
||||
except ValueError:
|
||||
port = 7171
|
||||
|
||||
uvicorn.run(app, host=host, port=port, log_level=log_level_str.lower(), access_log=False)
|
||||
uvicorn.run(
|
||||
app, host=host, port=port, log_level=log_level_str.lower(), access_log=False
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user