"""
|
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, pipe_l2):
|
# 初始化参数
|
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__':
|
# 策略与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进程
|
tradeProcess = multiprocessing.Process(target=lambda: huaxin_api.trade_client.run(ptl2_trade, pst_trade))
|
l2Process = multiprocessing.Process(target=lambda: huaxin_api.l2_client.run(ptl2_l2, psl2_l2))
|
tradeProcess.start()
|
l2Process.start()
|
# L1订阅数据
|
huaxin_api.l1_client.run_async(pl1t_l1)
|
# 将tradeServer作为主进程
|
input()
|