mirror of
https://github.com/jaypyles/Scraperr.git
synced 2025-11-21 08:36:17 +00:00
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
# STL
|
|
import logging
|
|
import docker
|
|
|
|
# PDM
|
|
from fastapi import APIRouter, HTTPException
|
|
from fastapi.responses import JSONResponse, StreamingResponse
|
|
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
|
|
log_router = APIRouter()
|
|
|
|
client = docker.from_env()
|
|
|
|
|
|
@log_router.get("/initial_logs")
|
|
async def get_initial_logs():
|
|
container_id = "scraperr_api"
|
|
|
|
try:
|
|
container = client.containers.get(container_id)
|
|
log_stream = container.logs(stream=False).decode("utf-8")
|
|
return JSONResponse(content={"logs": log_stream})
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500, detail=f"Unexpected error: {e}")
|
|
|
|
|
|
@log_router.get("/logs")
|
|
async def get_own_logs():
|
|
container_id = "scraperr_api"
|
|
|
|
try:
|
|
container = client.containers.get(container_id)
|
|
log_stream = container.logs(stream=True, follow=True)
|
|
|
|
def log_generator():
|
|
try:
|
|
for log in log_stream:
|
|
yield f"data: {log.decode('utf-8')}\n\n"
|
|
except Exception as e:
|
|
yield f"data: {str(e)}\n\n"
|
|
|
|
return StreamingResponse(log_generator(), media_type="text/event-stream")
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500, detail=str(e))
|