def get_server(): ''' 현재의 Python Interpreter 에서 접속한 백엔드와 교신하게 해 준다. Warara 코드 전반에서 사용된다. ''' global server if not server: if warara_settings.SERVER_TYPE == 'THRIFT': server = Server(ARARA_SERVER_HOST, ARARA_SERVER_BASE_PORT) elif warara_settings.SERVER_TYPE == 'DIRECT': # Set logger # XXX(hodduc): Thrift server와 arara_settings를 참조하지 않는 방향으로 고치면 더 좋을 듯 # bin/thrift_arara_server.py와 middleware/thrift_server.py에서 해당 부분을 분리해낼 필요가 있음 from middleware.thrift_server import set_default_log_handlers from etc import arara_settings set_default_log_handlers(arara_settings.ARARA_LOG_PATH, arara_settings.ARARA_DEBUG_HANDLER_ON, arara_settings.ARARA_DEBUG_LOG_PATH) logger = logging.getLogger('main') # Get Engine from arara import arara_engine from arara import model model.init_database() server = arara_engine.ARAraEngine() else: raise ValueError("Invalid Value for warara_settings.SERVER_TYPE") return server
def __init__(self): model.init_database()
''' ARAraEngine 객체를 생성하고, 디버깅에 유용한 모듈들을 import 한다. 디버깅 편의를 위해 global namespace 에 arara_engine 이라는 인스턴스를 생성. USAGE: $ python -i direct_arara_engine_loader.py >>> s = arara_engine.login_manager.login(u"SYSOP", u"SYSOP", "127.0.0.1") >>> print_memory_allocated() tools/memory_inspector.py 를 사용한다. tools/sqlalchemy_debugger.py 도 사용한다. ''' import os import sys THRIFT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'gen-py')) ARARA_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) sys.path.append(THRIFT_PATH) sys.path.append(ARARA_PATH) from arara import arara_engine from arara import model from tools.memory_inspector import print_memory_allocated from tools.sqlalchemy_debugger import compile_query model.init_database() arara_engine = arara_engine.ARAraEngine()