diff --git a/service.py b/service.py index 47ae878..eae1a70 100644 --- a/service.py +++ b/service.py @@ -4,62 +4,76 @@ import time from nameko.web.handlers import http from nameko_prometheus import PrometheusMetrics -class HTTPService: - name = "http_service" - metrics = PrometheusMetrics() - - def handle_request(self, request, message): - if random.random() < 0.1: - return 404, "Not found" - if random.random() < 0.05: - return 500, "Internal server error" - if random.random() < 0.01: - time.sleep(1) - return json.dumps({"message": message}) - time.sleep(random.random() * 0.01) +def handle_request(request, message): + if random.random() < 0.1: + return 404, "Not found" + if random.random() < 0.05: + return 500, "Internal server error" + if random.random() < 0.01: + time.sleep(1) return json.dumps({"message": message}) - - @http("GET", "/metrics") - def expose_metrics(self, request): - return self.metrics.expose_metrics(request) + time.sleep(random.random() * 0.01) + return json.dumps({"message": message}) +class BASICService: + name = "basic_service" + @http("GET", "/hello") def say_hello(self, request): - return self.handle_request(request, "Hello!") + return handle_request(request, "Hello!") @http("GET", "/goodbye") def say_goodbye(self, request): - return self.handle_request(request, "Goodbye!") + return handle_request(request, "Goodbye!") + +class USERSService: + name = "basic_service" + @http("GET", "/login") def login(self, request): - return self.handle_request(request, "Logged in!") + return handle_request(request, "Logged in!") @http("GET", "/logout") def logout(self, request): - return self.handle_request(request, "Logged out!") + return handle_request(request, "Logged out!") @http("GET", "/register") def register(self, request): - return self.handle_request(request, "Registered!") + return handle_request(request, "Registered!") @http("GET", "/users") def users(self, request): - return self.handle_request(request, "Users!") + return handle_request(request, "Users!") + + +class PRODUCTSService: + name = "products_service" @http("GET", "/products") def products(self, request): - return self.handle_request(request, "Products!") + return handle_request(request, "Products!") @http("GET", "/orders") def orders(self, request): - return self.handle_request(request, "Orders!") + return handle_request(request, "Orders!") @http("GET", "/cart") def cart(self, request): - return self.handle_request(request, "Cart!") + return handle_request(request, "Cart!") @http("GET", "/checkout") def checkout(self, request): - return self.handle_request(request, "Checkout!") + return handle_request(request, "Checkout!") + +class HTTPService( + BASICService, + USERSService, + PRODUCTSService, +): + name = "http_service" + metrics = PrometheusMetrics() + @http("GET", "/metrics") + def expose_metrics(self, request): + return self.metrics.expose_metrics(request)