main.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import logging
  2. import sys
  3. import os
  4. import threading
  5. import pulsar
  6. from kazoo.client import KazooClient
  7. from chive.service_runner import ServiceRunner
  8. from config import config
  9. current = os.path.dirname(os.path.abspath(__file__))
  10. parent = os.path.dirname(current)
  11. if parent not in sys.path:
  12. sys.path.append(parent)
  13. # logformat = '%(asctime)s %(pathname)s %(funcName)s%(lineno)d %(levelname)s: %(message)s'
  14. log_level = config['log_level']
  15. logging.basicConfig(
  16. level=getattr(logging, log_level.upper())
  17. , stream=sys.stdout
  18. , format='%(asctime)s %(levelname)s: %(message)s')
  19. _logger = logging.getLogger(__name__)
  20. class TraderXApp(ServiceRunner):
  21. def __init__(self, name, zk_client, pulsar_client, address):
  22. super().__init__(name, zk_client, pulsar_client, address)
  23. self.tick_listener = []
  24. def start(self):
  25. self.load_modules('traderx.services.service')
  26. super().start()
  27. def stop(self, block=True, timeout=15):
  28. super().stop(block=block, timeout=timeout)
  29. if __name__ == '__main__':
  30. threading.current_thread().testing = False
  31. # log_server = config['log_server'] or "tcp://*:5555"
  32. # start_log_server(server_address=log_server)
  33. # client_id = config.pecat['name']
  34. # configure_logging(client_id, server_address=log_server)
  35. zk_client = KazooClient(hosts=config['zookeeper_url'])
  36. zk_client.start()
  37. _pulsar_logger = logging.getLogger('pulsar')
  38. _pulsar_logger.setLevel(logging.WARNING)
  39. pulsar_client = pulsar.Client(config['pulsar_url'], logger=_pulsar_logger)
  40. server_address = config['rpc_server']
  41. app = TraderXApp(f'TraderXApp-{config["app_name"]}', zk_client, pulsar_client, server_address)
  42. def exit_app(*args):
  43. _logger.info('User interrupt.')
  44. try:
  45. app.shutdown()
  46. app.stop()
  47. except Exception as e:
  48. _logger.info(e)
  49. finally:
  50. _logger.info("Main thread done")
  51. sys.exit(0)
  52. import signal
  53. signal.signal(signal.SIGINT, exit_app)
  54. app.start()
  55. import time
  56. while True:
  57. time.sleep(1)