Skip to content

Commit

Permalink
Merge pull request #21 from lsst-sqre/tickets/DM-31998
Browse files Browse the repository at this point in the history
DM-31998: Performance tuning
  • Loading branch information
jonathansick committed Oct 4, 2021
2 parents a1f3465 + e9fb1bd commit b9ff61c
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 35 deletions.
2 changes: 1 addition & 1 deletion manifests/base/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ metadata:
labels:
app: rubintv
spec:
replicas: 1
replicas: 5
selector:
matchLabels:
name: rubintv
Expand Down
2 changes: 1 addition & 1 deletion manifests/base/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ kind: Kustomization

images:
- name: lsstsqre/rubintv
newTag: 0.0.10
newTag: 0.0.11

resources:
- configmap.yaml
Expand Down
61 changes: 36 additions & 25 deletions src/rubintv/handlers/external/endpoints.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

from rubintv.handlers import routes
from rubintv.models import Channel, Image
from rubintv.timer import Timer

channels = {
"spec": Channel(
Expand All @@ -39,29 +40,36 @@
@routes.get("")
@routes.get("/")
async def get_table(request: web.Request) -> web.Response:
""""""
if "num" in request.query:
num = int(request.query["num"])
else:
num = 10
if "beg_date" in request.query:
beg_date = datetime.fromisoformat(request.query["beg_date"])
else:
beg_date = None # type: ignore[assignment]
if "end_date" in request.query:
end_date = datetime.fromisoformat(request.query["end_date"])
else:
end_date = None # type: ignore[assignment]
bucket = request.config_dict["rubintv/gcs_bucket"]
page = get_formatted_table(
"table.html", bucket, num=num, beg_date=beg_date, end_date=end_date
)
logger = request["safir/logger"]
with Timer() as timer:
if "num" in request.query:
num = int(request.query["num"])
else:
num = 10
if "beg_date" in request.query:
beg_date = datetime.fromisoformat(request.query["beg_date"])
else:
beg_date = None # type: ignore[assignment]
if "end_date" in request.query:
end_date = datetime.fromisoformat(request.query["end_date"])
else:
end_date = None # type: ignore[assignment]
bucket = request.config_dict["rubintv/gcs_bucket"]
page = get_formatted_table(
"table.html", bucket, num=num, beg_date=beg_date, end_date=end_date
)
logger.info("get_table", duration=timer.seconds)
return web.Response(text=page, content_type="text/html")


@routes.get("/{name}events/{date}/{seq}")
async def events(request: web.Request) -> web.Response:
page = get_event_page(request, channels[request.match_info["name"]].prefix)
logger = request["safir/logger"]
with Timer() as timer:
page = get_event_page(
request, channels[request.match_info["name"]].prefix
)
logger.info("events", duration=timer.seconds)
return web.Response(text=page, content_type="text/html")


Expand All @@ -74,13 +82,16 @@ def get_event_page(request: web.Request, prefix: str) -> str:

@routes.get("/{name}_current")
async def current(request: web.Request) -> web.Response:
bucket = request.config_dict["rubintv/gcs_bucket"]
page = get_formatted_page(
"current.html",
channels[request.match_info["name"]].prefix,
bucket,
num=1,
)
logger = request["safir/logger"]
with Timer() as timer:
bucket = request.config_dict["rubintv/gcs_bucket"]
page = get_formatted_page(
"current.html",
channels[request.match_info["name"]].prefix,
bucket,
num=1,
)
logger.info("current", duration=timer.seconds)
return web.Response(text=page, content_type="text/html")


Expand Down
16 changes: 8 additions & 8 deletions src/rubintv/static/js/refresh.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
$(document).ready(function(){
refreshDiv();
});
$(document).ready(function () {
refreshDiv();
});

function refreshDiv(){
$('#refresher').load(window.location.href + " #refresher" , function(){
setTimeout(refreshDiv, 500);
});
}
function refreshDiv() {
$('#refresher').load(window.location.href + ' #refresher', function () {
setTimeout(refreshDiv, 5000);
});
}
23 changes: 23 additions & 0 deletions src/rubintv/timer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
"""Basic timing utility."""

from __future__ import annotations

import time
from typing import Any

__all__ = ["Timer"]


class Timer:
"""Time a context.
Access the duration after the context exits with the ``seconds``
attribute.
"""

def __enter__(self) -> Timer:
self._start = time.perf_counter()
return self

def __exit__(self, *exc_info: Any) -> None:
self.seconds = time.perf_counter() - self._start

0 comments on commit b9ff61c

Please sign in to comment.