Skip to content

two containers and connect to kafka #21

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 19 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
set up logers
  • Loading branch information
womullan committed Apr 25, 2025
commit 99c7cf71e8aa6d843506069ac467be881c375bb0
13 changes: 13 additions & 0 deletions src/obsloctap/consumekafka.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import asyncio
import json
import logging
import os
import random
import time
Expand All @@ -11,6 +12,18 @@

from obsloctap.schedule24h import Schedule24

# Configure logging
log = logging.getLogger(__name__)
handler = logging.StreamHandler()
formatter = logging.Formatter(
"%(asctime)s [%(name)-12s] %(levelname)-8s %(message)s"
)
handler.setFormatter(formatter)
log.addHandler(handler)
if "LOG_LEVEL" in os.environ:
log.setLevel(os.environ["LOG_LEVEL"].upper())
else:
log.setLevel("DEBUG")
# Environment variables from deployment

kafka_cluster = os.environ["KAFKA_CLUSTER"]
Expand Down
1 change: 1 addition & 0 deletions src/obsloctap/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ class MockDbHelp(DbHelp):
obslist = list[Obsplan]()

async def get_schedule(self, time: float = 0) -> list[Obsplan]:
log.warning("Using MOCKDBHelp")
observations = []
obs = Obsplan()
obs.t_planning = 60032.194918981484
Expand Down
11 changes: 8 additions & 3 deletions src/obsloctap/handlers/external.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""Handlers for the app's external root, ``/obsloctap/``."""

from fastapi import APIRouter, Depends
from fastapi.params import Query
from safir.dependencies.logger import logger_dependency
from safir.metadata import get_metadata
from structlog.stdlib import BoundLogger
Expand Down Expand Up @@ -34,7 +35,7 @@ async def get_index(
# There is no need to log simple requests since uvicorn will do this
# automatically, but this is included as an example of how to use the
# logger for more complex logging.
logger.info("Request for application metadata")
logger.debug("Request for application metadata")

metadata = get_metadata(
package_name="obsloctap",
Expand All @@ -52,7 +53,11 @@ async def get_index(
response_model_exclude_none=True,
summary="Observation Schedule",
)
async def get_schedule() -> list[Obsplan]:
async def get_schedule(
time: int = Query(24, description="hours[1-48] for schedule lookahead"),
logger: BoundLogger = Depends(logger_dependency),
) -> list[Obsplan]:
logger.info(f"Schedule requested for time: {time}")
dbhelp = await DbHelpProvider.getHelper()
schedule = await dbhelp.get_schedule()
schedule = await dbhelp.get_schedule(time)
return schedule
15 changes: 14 additions & 1 deletion src/obsloctap/schedule24h.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,15 @@

import asyncio
import logging
import os

from astropy.time import Time, TimeDelta
from fast_depends import Depends
from pandas import DataFrame
from rubin_sim import __version__ as rubin_sim_version
from rubin_sim.sim_archive import sim_archive
from safir.dependencies.logger import logger_dependency
from structlog import BoundLogger

from obsloctap.db import DbHelpProvider
from obsloctap.models import Obsplan, spectral_ranges
Expand All @@ -20,6 +24,14 @@
tbuffer = TimeDelta("10min")
t24h = TimeDelta("24hr")

# Configure logging
log: BoundLogger = (Depends(logger_dependency),)
rootlog = logging.getLogger()
if "LOG_LEVEL" in os.environ:
rootlog.setLevel(os.environ["LOG_LEVEL"].upper())
else:
rootlog.setLevel("DEBUG")


class Schedule24:
def __init__(self) -> None:
Expand All @@ -43,7 +55,7 @@ def get_schedule24(self) -> DataFrame:
try:
visits = sim_archive.fetch_obsloctap_visits(nights=2)
except TypeError:
print("Dropping to 1 night")
logging.info("Dropping to 1 night")
visits = sim_archive.fetch_obsloctap_visits(nights=1)
logging.info(f"Got {len(visits)} for 24 hour schedule")
if type(visits) is not DataFrame:
Expand All @@ -62,6 +74,7 @@ def format_schedule(self, visits: DataFrame) -> list[Obsplan]:
obs.s_ra = v["fieldRA"]
obs.s_dec = v["fieldDec"]
time = Time(v["observationStartMJD"], format="mjd")
obs.t_planning = time
obs.t_min = time - tbuffer
obs.t_max = time + texp + tbuffer
spectral_range = spectral_ranges[v["band"]]
Expand Down
Loading