Source code for oriole_service.app

#
#                __   _,--="=--,_   __
#               /  \."    .-.    "./  \
#              /  ,/  _   : :   _  \/` \
#              \  `| /o\  :_:  /o\ |\__/
#               `-'| :="~` _ `~"=: |
#                  \`     (_)     `/
#           .-"-.   \      |      /   .-"-.
#    .-----{     }--|  /,.-'-.,\  |--{     }-----.
#     )    (_)_)_)  \_/`~-===-~`\_/  (_(_(_)    (
#    (                                          )
#     )                Oriole-APP               (
#    (                  Eric.Zhou               )
#    '-------------------------------------------'
#

import sys
import copy
from os import path, pardir
from nameko.rpc import rpc, RpcProxy
from nameko.events import EventDispatcher, event_handler
from oriole_service.api import get_config, cwd, get_logger
from oriole_service.db import *
from datetime import datetime, date
from decimal import Decimal

topdir = path.join(cwd(), pardir, pardir)
sys.path.insert(0, topdir)
from dao import *


[docs]class App: """ Connect database As usual, supply mysql and redis. """ db = Db(Base) rs = Rs() log = get_logger() ver = "1.0.0" name = "supervisor_thread"
[docs] def init(self): ''' Noop '''
[docs] @rpc def ping(self): return True
[docs] @rpc def version(self): return self.ver
# # These methods are used in services. # NOT use in oriole-service anytime. # def _(self, item): """ Get item from params """ if isinstance(item, dict): self._params = copy.deepcopy(item) return self._params try: return self._params.get(item) except: raise RuntimeError("Error: Use self._(params) first.") def _o(self, obj): """ Translate object to json. Dict in python is not json, so don't be confused. When return object from rpc, should always use _o. """ if obj == None: return obj elif isinstance(obj, Decimal): return str(obj) elif isinstance(obj, datetime): return obj.strftime("%Y-%m-%d %H:%M:%S") elif isinstance(obj, date): return obj.strftime("%Y-%m-%d") elif isinstance(obj, (list, set, tuple)): return self._ol(obj) elif isinstance(obj, dict): return self._od(obj) elif isinstance(obj, (int, str, bool, float)): return obj else: return self._oo(obj) def _oo(self, obj): """ Don't use it! """ result = {} try: for key in dir(obj): if key != "metadata" and key[0] != "_": value = getattr(obj, key) if not callable(value): result[key] = self._o(value) except: raise RuntimeError("Error: %s, only support json" % (type(obj))) return result def _ol(self, obj): """ Don't use it! """ return [self._o(item) for item in obj] def _od(self, obj): """ Don't use it! """ return {item: self._o(obj[item]) for item in obj}
[docs] def obj2dict(self, obj): """ Don't use it! """ return self._oo(obj)