use the uvicorn logger; also update dockerfile to run migrations as parto f startup instead of when starting uvicorn
This commit is contained in:
parent
684af9a040
commit
744fa7b8a7
4 changed files with 17 additions and 63 deletions
|
|
@ -2,9 +2,9 @@ import asyncio
|
||||||
import importlib
|
import importlib
|
||||||
import itertools
|
import itertools
|
||||||
import json
|
import json
|
||||||
|
import logging
|
||||||
import pathlib
|
import pathlib
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from logger import get_logger
|
|
||||||
from rec.query import detail_query, listing_query, QueryParameters
|
from rec.query import detail_query, listing_query, QueryParameters
|
||||||
from rec.districts import get_districts
|
from rec.districts import get_districts
|
||||||
from repositories import ListingRepository
|
from repositories import ListingRepository
|
||||||
|
|
@ -16,7 +16,7 @@ from models import Listing as modelListing
|
||||||
dump_images_module = importlib.import_module("3_dump_images")
|
dump_images_module = importlib.import_module("3_dump_images")
|
||||||
detect_floorplan_module = importlib.import_module("4_detect_floorplan")
|
detect_floorplan_module = importlib.import_module("4_detect_floorplan")
|
||||||
|
|
||||||
logger = get_logger(__file__)
|
logger = logging.getLogger("uvicorn")
|
||||||
|
|
||||||
|
|
||||||
async def dump_listings_full(
|
async def dump_listings_full(
|
||||||
|
|
|
||||||
|
|
@ -40,4 +40,5 @@ EXPOSE 8000
|
||||||
# Set the entry point (adjust to your CLI's entry point)
|
# Set the entry point (adjust to your CLI's entry point)
|
||||||
# ENTRYPOINT ["python", "/app/main.py"]
|
# ENTRYPOINT ["python", "/app/main.py"]
|
||||||
# ENTRYPOINT ["/app/runall.sh"]
|
# ENTRYPOINT ["/app/runall.sh"]
|
||||||
ENTRYPOINT ["uvicorn", "api.app:app", "--host", "0.0.0.0", "--port", "8000"]
|
CMD ["/bin/bash" ,"-c" ,"alembic upgrade head && uvicorn api.app:app --host 0.0.0.0 --port 8000"]
|
||||||
|
# ENTRYPOINT ["uvicorn", "api.app:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import logging
|
||||||
|
import logging.config
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import queue
|
import queue
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
@ -15,7 +17,6 @@ from api.worker import (
|
||||||
)
|
)
|
||||||
from fastapi import Depends, FastAPI, HTTPException, Query
|
from fastapi import Depends, FastAPI, HTTPException, Query
|
||||||
from api.auth import User
|
from api.auth import User
|
||||||
from logger import get_logger
|
|
||||||
from models.listing import QueryParameters
|
from models.listing import QueryParameters
|
||||||
from repositories.listing_repository import ListingRepository
|
from repositories.listing_repository import ListingRepository
|
||||||
from repositories.listing_repository import ListingRepository
|
from repositories.listing_repository import ListingRepository
|
||||||
|
|
@ -26,20 +27,21 @@ from alembic import command
|
||||||
from alembic.config import Config
|
from alembic.config import Config
|
||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
|
|
||||||
logger = get_logger(__file__)
|
logger = logging.getLogger("uvicorn")
|
||||||
|
|
||||||
|
|
||||||
@asynccontextmanager
|
# @asynccontextmanager
|
||||||
async def lifespan(app: FastAPI):
|
# async def lifespan(app: FastAPI):
|
||||||
alembic_cfg = Config("./alembic.ini")
|
# alembic_cfg = Config("./alembic.ini")
|
||||||
logger.info("Running alembic migrations")
|
# logger.info("Running alembic migrations")
|
||||||
command.upgrade(alembic_cfg, "head")
|
# command.upgrade(alembic_cfg, "head")
|
||||||
logger.info("Finished running alembic migrations")
|
# logger.info("Finished running alembic migrations")
|
||||||
yield
|
# yield
|
||||||
logger.warning("Shutting down")
|
# logger.warning("Shutting down")
|
||||||
|
|
||||||
|
|
||||||
app = FastAPI(lifespan=lifespan)
|
# app = FastAPI(lifespan=lifespan)
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
# Start worker thread
|
# Start worker thread
|
||||||
WorkerManager(DumpListingsWorker()).start()
|
WorkerManager(DumpListingsWorker()).start()
|
||||||
|
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
from functools import lru_cache
|
|
||||||
import logging
|
|
||||||
import sys
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
|
|
||||||
@lru_cache(maxsize=None)
|
|
||||||
def get_logger(
|
|
||||||
name: str,
|
|
||||||
log_file: str = "app.log",
|
|
||||||
console_level: str = "DEBUG",
|
|
||||||
file_level: str = "DEBUG",
|
|
||||||
):
|
|
||||||
"""
|
|
||||||
Configure a logger with console and file handlers.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
name: Logger name (usually __name__).
|
|
||||||
log_file: Path to the log file.
|
|
||||||
console_level: Console logging level (INFO, DEBUG, etc.).
|
|
||||||
file_level: File logging level.
|
|
||||||
"""
|
|
||||||
logger = logging.getLogger(name)
|
|
||||||
logger.setLevel(logging.DEBUG) # Set to lowest level (handlers filter further)
|
|
||||||
|
|
||||||
# Clear existing handlers (avoid duplicates in Jupyter/reloads)
|
|
||||||
logger.handlers.clear()
|
|
||||||
|
|
||||||
# ---- Console Handler ----
|
|
||||||
console_handler = logging.StreamHandler(sys.stdout)
|
|
||||||
console_handler.setLevel(console_level.upper())
|
|
||||||
console_format = logging.Formatter(
|
|
||||||
"[%(asctime)s] %(levelname)s in %(module)s:%(lineno)d - %(message)s"
|
|
||||||
# "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
|
||||||
)
|
|
||||||
console_handler.setFormatter(console_format)
|
|
||||||
logger.addHandler(console_handler)
|
|
||||||
|
|
||||||
# ---- File Handler ----
|
|
||||||
# Path(log_file).parent.mkdir(parents=True, exist_ok=True) # Ensure dir exists
|
|
||||||
# file_handler = logging.FileHandler(log_file)
|
|
||||||
# file_handler.setLevel(file_level.upper())
|
|
||||||
# file_format = logging.Formatter(
|
|
||||||
# "%(asctime)s - %(name)s - %(levelname)s - %(message)s (%(filename)s:%(lineno)d)"
|
|
||||||
# )
|
|
||||||
# file_handler.setFormatter(file_format)
|
|
||||||
# logger.addHandler(file_handler) # skip files for now
|
|
||||||
|
|
||||||
return logger
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue