Files
2024-07-11 11:11:40 +03:00

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)