""" GUI管理 """ import multiprocessing from db import redis_manager_delegate as redis_manager import huaxin_api.trade_client import huaxin_api.l2_client import huaxin_api.l1_client from server import * # 交易服务 from third_data import data_server from trade.huaxin import trade_server, trade_api_server # from huaxin_api import trade_client, l2_client, l1_client def createTradeServer(pipe_server, pipe_trade, pipe_l1): # 初始化参数 global_data_loader.init() # 数据服务 t1 = threading.Thread(target=createDataServer, daemon=True) t1.start() # 交易接口服务 t1 = threading.Thread(target=trade_api_server.run, args=(pipe_server,), daemon=True) t1.start() # redis后台服务 t1 = threading.Thread(target=redis_manager.RedisUtils.run_loop, daemon=True) t1.start() # 交易服务 trade_server.run(pipe_trade, pipe_l1) # 主服务 def createServer(pipe): print("create Server") laddr = "", 9001 tcpserver = MyThreadingTCPServer(laddr, MyBaseRequestHandle, pipe_trade=pipe) # 注意:参数是MyBaseRequestHandle # tcpserver.handle_request() # 只接受一个客户端连接 tcpserver.serve_forever() # 永久循环执行,可以接受多个客户端连接 def createDataServer(): print("create DataServer") tcpserver = data_server.run("", 9004) tcpserver.serve_forever() if __name__ == '__main__': # 策略与server间的通信 pss_server, pss_strategy = multiprocessing.Pipe() # 策略与交易间的通信 pst_trade, pst_strategy = multiprocessing.Pipe() # 交易与l2之间的通信 ptl2_trade, ptl2_l2 = multiprocessing.Pipe() # l1与trade间的通信 pl1t_l1, pl1t_trade = multiprocessing.Pipe() serverProcess = multiprocessing.Process(target=createServer, args=(pss_server,)) serverProcess.start() # 交易进程与L2进程 tradeProcess = multiprocessing.Process(target=huaxin_api.trade_client.run, args=(ptl2_trade, pst_trade)) l2Process = multiprocessing.Process(target=huaxin_api.l2_client.run, args=(ptl2_l2,)) tradeProcess.start() l2Process.start() # L1订阅数据 huaxin_api.l1_client.run_async(pl1t_l1) # 将tradeServer作为主进程 createTradeServer(pss_strategy, pst_strategy, pl1t_trade)