112f1ecdcc
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
80 lines
2.0 KiB
Python
80 lines
2.0 KiB
Python
import json
|
|
import random
|
|
import time
|
|
from nameko.web.handlers import http
|
|
from nameko_prometheus import PrometheusMetrics
|
|
|
|
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})
|
|
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 handle_request(request, "Hello!")
|
|
|
|
@http("GET", "/goodbye")
|
|
def say_goodbye(self, request):
|
|
return handle_request(request, "Goodbye!")
|
|
|
|
|
|
class USERSService:
|
|
name = "basic_service"
|
|
|
|
@http("GET", "/login")
|
|
def login(self, request):
|
|
return handle_request(request, "Logged in!")
|
|
|
|
@http("GET", "/logout")
|
|
def logout(self, request):
|
|
return handle_request(request, "Logged out!")
|
|
|
|
@http("GET", "/register")
|
|
def register(self, request):
|
|
return handle_request(request, "Registered!")
|
|
|
|
@http("GET", "/users")
|
|
def users(self, request):
|
|
return handle_request(request, "Users!")
|
|
|
|
|
|
class PRODUCTSService:
|
|
name = "products_service"
|
|
|
|
@http("GET", "/products")
|
|
def products(self, request):
|
|
return handle_request(request, "Products!")
|
|
|
|
@http("GET", "/orders")
|
|
def orders(self, request):
|
|
return handle_request(request, "Orders!")
|
|
|
|
@http("GET", "/cart")
|
|
def cart(self, request):
|
|
return handle_request(request, "Cart!")
|
|
|
|
@http("GET", "/checkout")
|
|
def checkout(self, request):
|
|
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)
|