halurpc.appserverrpc のソースコード

# coding: utf-8

import json
import msgpackrpc

from logger.halulogger         import HaluLogger
from halumain.haluconf         import HaluConf
from model.mainmodel           import MainModel
from view.mainview             import MainView
from controller.maincontroller import MainController


[ドキュメント] class AppServer(): """ 起動元:halumain/appserver.pyから起動される常駐型のアプリケーションサーバ 呼び出し元:AppClient 仮引数:requestdict 戻り値:responsedict """ def __init__(self): self.alog = HaluLogger('appserver') self.alogname = 'appserver' self.alog.debug(self.alogname, 'app server init start') # MVCをインスタンスする mlog = HaluLogger('model') mlogname = 'model' dlog = HaluLogger('database') dlogname = 'database' self.main_model = MainModel(mlog, mlogname, dlog, dlogname) vlog = HaluLogger('view') vlogname = 'view' self.main_view = MainView(vlog, vlogname) clog = HaluLogger('controller') clogname = 'controller' self.main_controller = MainController(clog, clogname, self.main_model, self.main_view) self.alog.debug(self.alogname, 'app server init end\n')
[ドキュメント] def call(self, requestdict): try: self.alog.debug(self.alogname, f'app server start requestdict : {requestdict}') # メインコントローラをコールする responsedict = self.main_controller.call(requestdict) return responsedict except Exception as e: self.alog.error(self.alogname, f'app server abnormal message : {e}') finally: self.alog.debug(self.alogname, f'app server end responsedict : {responsedict}\n')
[ドキュメント] class AppClient(): """ halu/halu.pyのhalumain内でインスタンスされ、callが実行される 呼び出し先:AppServer 実引数:requestdict 戻り値:responsedict """ def __init__(self): hconf = HaluConf() self.ipaddress = hconf.appserver_address self.port = hconf.appserver_port
[ドキュメント] def call(self, requestdict): # アプリケーションサーバへ接続する client = msgpackrpc.Client(msgpackrpc.Address(self.ipaddress, self.port), unpack_encoding='utf-8') # アプリケーションサーバへリクエストデータを送信し、レスポンスデータを受け取る #responsedict = client.call('call', requestdict) future = client.call_async('call', requestdict) responsedict = future.get() return responsedict