Untitled

 avatar
unknown
plain_text
a year ago
1.9 kB
7
Indexable
class HttpServerHandler(BaseHTTPRequestHandler):
    def do_OPTIONS(self):
      response = 200
      q = "SELECT pg_is_in_recovery()"
      cursor = self.server.db.cursor()
      cursor.execute(q)
      recovery = cursor.fetchone()
      if recovery[0]:
        msg = "Replica"
        response = 206
      else:
        msg = "Primary"

      self.send_response(response)
      self.send_header("Content-type", "text/html")
      self.end_headers()

    def do_GET(self):
      response = 200
      logger.debug(type(self.headers))
      q = "SELECT pg_is_in_recovery()"
      cursor = self.server.db.cursor()
      cursor.execute(q)
      recovery = cursor.fetchone()
      if recovery[0]:
        response = 206
        msg = "Replica"
      else:
        msg = "Primary"

      #logger.debug(f"Sending {response}, '{msg}'")
      self.send_response(response)
      self.send_header("Content-type", "text/html")
      self.end_headers()

class MyHTTPServer(HTTPServer):
    """this class is necessary to allow passing the db connection into the RequestHandlerClass"""
    def __init__(self, server_address, RequestHandlerClass, db):
        HTTPServer.__init__(self, server_address, RequestHandlerClass)
        self.db = db

class HttpServer:
    def __init__(self, name, host, port, db):
        self.name = name
        self.host = host
        self.port = port
        self.db = db
        self.server = None

    def start(self):
      logger.info('Starting %s at %s:%d' % (self.name, self.host, self.port))
      server_address = (self.host, self.port)
      self.server = MyHTTPServer(server_address, HttpServerHandler, self.db)
      self.server.serve_forever()

    def stop(self):
      if self.server:
        logging.info('Stopping %s at %s:%d' % (self.name, self.host, self.port))
        self.server.shutdown()
Editor is loading...
Leave a Comment