71 lines
1.8 KiB
Python
71 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import pprint
|
|
import yaml
|
|
import signal
|
|
import sys
|
|
|
|
import logging
|
|
import logging.config
|
|
|
|
from alembic.config import Config
|
|
from alembic import command
|
|
|
|
from process import Process
|
|
from jvsquery import JvsQuery
|
|
from db import MySQLSession
|
|
from utils import TaskThread
|
|
|
|
|
|
pp = pprint.PrettyPrinter(indent=4)
|
|
|
|
|
|
class SyncTread(TaskThread):
|
|
"""docstring for ClassName"""
|
|
def __init__(self, config):
|
|
super(SyncTread, self).__init__()
|
|
|
|
jvs_query = JvsQuery(config['jeeves_db'])
|
|
db_session = MySQLSession(config['mysql'])
|
|
self.process = Process(jvs_query, db_session)
|
|
|
|
self.logger = logging.getLogger("PyJeeves.SyncTread")
|
|
|
|
def task(self):
|
|
self.logger.info("Started sync")
|
|
self.process.sync_data()
|
|
self.logger.info("Finished sync")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
with open("config.yml", 'r') as ymlfile:
|
|
cfg = yaml.load(ymlfile)
|
|
|
|
logging.config.dictConfig(cfg['logging'])
|
|
logger = logging.getLogger("PyJeeves")
|
|
|
|
logger.info("Running migrations")
|
|
alembic_cfg = Config()
|
|
for k in cfg['alembic']:
|
|
alembic_cfg.set_main_option(k, cfg['alembic'][k])
|
|
command.upgrade(alembic_cfg, "head")
|
|
|
|
logger.info("Application started")
|
|
|
|
def sigterm_handler(signal, frame):
|
|
# save the state here or do whatever you want
|
|
logger.info('Application interrupted')
|
|
sys.exit(0)
|
|
signal.signal(signal.SIGINT, sigterm_handler)
|
|
signal.signal(signal.SIGTERM, sigterm_handler)
|
|
|
|
sync_thread = SyncTread(cfg)
|
|
try:
|
|
sync_thread.setInterval(cfg['sync_interval'])
|
|
sync_thread.start()
|
|
sync_thread.join()
|
|
finally:
|
|
sync_thread.shutdown()
|
|
logger.info("Thread stopped")
|
|
|
|
logger.info("Application stopped")
|