| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import logging
- import sys
- import os
- import threading
- import pulsar
- from kazoo.client import KazooClient
- from chive.service_runner import ServiceRunner
- from config import config
- current = os.path.dirname(os.path.abspath(__file__))
- parent = os.path.dirname(current)
- if parent not in sys.path:
- sys.path.append(parent)
- # logformat = '%(asctime)s %(pathname)s %(funcName)s%(lineno)d %(levelname)s: %(message)s'
- log_level = config['log_level']
- logging.basicConfig(
- level=getattr(logging, log_level.upper())
- , stream=sys.stdout
- , format='%(asctime)s %(levelname)s: %(message)s')
- _logger = logging.getLogger(__name__)
- class TraderXApp(ServiceRunner):
- def __init__(self, name, zk_client, pulsar_client, address):
- super().__init__(name, zk_client, pulsar_client, address)
- self.tick_listener = []
- def start(self):
- self.load_modules('traderx.services.service')
- super().start()
- def stop(self, block=True, timeout=15):
- super().stop(block=block, timeout=timeout)
- if __name__ == '__main__':
- threading.current_thread().testing = False
- # log_server = config['log_server'] or "tcp://*:5555"
- # start_log_server(server_address=log_server)
- # client_id = config.pecat['name']
- # configure_logging(client_id, server_address=log_server)
- zk_client = KazooClient(hosts=config['zookeeper_url'])
- zk_client.start()
- _pulsar_logger = logging.getLogger('pulsar')
- _pulsar_logger.setLevel(logging.WARNING)
- pulsar_client = pulsar.Client(config['pulsar_url'], logger=_pulsar_logger)
- server_address = config['rpc_server']
- app = TraderXApp(f'TraderXApp-{config["app_name"]}', zk_client, pulsar_client, server_address)
- def exit_app(*args):
- _logger.info('User interrupt.')
- try:
- app.shutdown()
- app.stop()
- except Exception as e:
- _logger.info(e)
- finally:
- _logger.info("Main thread done")
- sys.exit(0)
- import signal
- signal.signal(signal.SIGINT, exit_app)
- app.start()
- import time
- while True:
- time.sleep(1)
|