mirror of
https://git.ianrenton.com/ian/spothole.git
synced 2026-02-04 09:14:30 +00:00
Implement web server metrics in Tornado #3
This commit is contained in:
@@ -5,16 +5,24 @@ from datetime import datetime, timedelta
|
||||
import pytz
|
||||
import tornado
|
||||
|
||||
from core.prometheus_metrics_handler import api_requests_counter
|
||||
from core.utils import serialize_everything
|
||||
|
||||
|
||||
# API request handler for /api/v1/spots
|
||||
class APISpotsHandler(tornado.web.RequestHandler):
|
||||
def initialize(self, spots):
|
||||
def initialize(self, spots, web_server_metrics):
|
||||
self.spots = spots
|
||||
self.web_server_metrics = web_server_metrics
|
||||
|
||||
def get(self):
|
||||
try:
|
||||
# Metrics
|
||||
self.web_server_metrics["last_api_access_time"] = datetime.now(pytz.UTC)
|
||||
self.web_server_metrics["api_access_counter"] += 1
|
||||
self.web_server_metrics["status"] = "OK"
|
||||
api_requests_counter.inc()
|
||||
|
||||
# request.arguments contains lists for each param key because technically the client can supply multiple,
|
||||
# reduce that to just the first entry, and convert bytes to string
|
||||
query_params = {k: v[0].decode("utf-8") for k, v in self.request.arguments.items()}
|
||||
@@ -40,6 +48,9 @@ class APISpotsStreamHandler(tornado.web.RequestHandler):
|
||||
def get(self):
|
||||
# todo
|
||||
# try:
|
||||
# # Metrics
|
||||
# api_requests_counter.inc()
|
||||
#
|
||||
# response.content_type = 'text/event-stream'
|
||||
# response.cache_control = 'no-cache'
|
||||
# yield 'retry: 1000\n\n'
|
||||
|
||||
Reference in New Issue
Block a user