Laka is a microservice framework for Python, based on json and redis.
- Step one
Install Fofo - Step two
pip install laka
- Service Register and Discovery
- Transmit data with Json RPC
- Create Server and Register Service
from laka import LakaServer laka_server = LakaServer( service_name="lakaTest", # Register Service with this name redis_host="localhost", redis_port=6379, redis_queue="laka_request", fofo_host="10.88.190.211", fofo_port=6379, response_message=RESPONSE_MESSAGE, check_health=True, )
- Define param for Handler
from laka import Param class CreateUserParam(Param): def __init__(self): self.account = None self.password = None self.tel = None def validate(self): """ validate will be run automatically you should not run validate by yourself """ if not (self.account and self.password): return False return True
- Define Handler
from laka import Handler class CreateUserHandler(Handler): Param = CreateUserParam def handle(self): user = {"password":self.param.password, "account":self.param.account} return HandlerOK(user)
- Add router
# COMMAND_CREATE_USER = 101 laka_server.router(COMMAND_CREATE_USER, CreateUserHandler)
- Accept & Handle request
for queue, cmd in laka_server.accept_request(): handler_response = laka_server.handle(cmd)
- Create Client
from laka import LakaClient laka_client = LakaClient( service_name="lakaTest", # service_name is the service you want to connect to fofo_host="10.88.190.211", fofo_port=6379, )
- Define & Create param
from laka import Param class CreateUserParam(Param): def __init__(self, account, password, tel=None): self.account = account self.password = password self.tel = tel def validate(self): """ validate will be run in request automatically you should not run validate by yourself """ if not (self.account and self.password): return False return True param = CreateUserParam("olivetree", "123456")
- Send Request & Get Response
# COMMAND_CREATE_USER = 101 request_id = laka_client.request(COMMAND_CREATE_USER, param) response = laka_client.accept_response(request_id) print("response = ", response.json())