""" GUI管理 """ import multiprocessing import os import sys 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 log_module import log from log_module.log import logger_l2_trade 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, pipe_l2): log.close_print() # 初始化参数 global_data_loader.init() # 数据服务 t1 = threading.Thread(target=createDataServer, daemon=True) t1.start() # 交易接口服务 t1 = threading.Thread(target=trade_api_server.run, args=(pipe_server, pipe_l2), 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__': logger_l2_trade.info("test123123") log.close_print() # 策略与server间的通信 pss_server, pss_strategy = multiprocessing.Pipe() # 策略与交易间的通信 pst_trade, pst_strategy = multiprocessing.Pipe() # 交易与l2之间的通信 ptl2_trade, ptl2_l2 = multiprocessing.Pipe() # 策略与l2之间的通信 psl2_strategy, psl2_l2 = multiprocessing.Pipe() # l1与策略间的通信 pl1t_l1, pl1t_strategy = multiprocessing.Pipe() # 托管环境下不创建 # serverProcess = multiprocessing.Process(target=createServer, args=(pss_server,)) # serverProcess.start() tradeServerProcess = multiprocessing.Process(target=createTradeServer, args=(pss_strategy, pst_strategy, pl1t_strategy, psl2_strategy)) tradeServerProcess.start() # 交易进程与L2进程 l2Process = multiprocessing.Process(target=huaxin_api.l2_client.run, args=(ptl2_l2, psl2_l2,)) l2Process.start() # tradeProcess = multiprocessing.Process(target=huaxin_api.trade_client.run, args=(ptl2_trade, pst_trade,)) tradeProcess.start() # L1订阅数据 huaxin_api.l1_client.run_async(pl1t_l1) # 将tradeServer作为主进程 tradeServerProcess.join() tradeProcess.join() l2Process.join()