| | |
| | | @classmethod |
| | | def run_loop(cls): |
| | | logger_system.info("启动Redis数据同步服务") |
| | | logger_system.debug(f"线程ID,redis:{threading.current_thread().ident}") |
| | | dataList = [] |
| | | last_upload_time = time.time() |
| | | while True: |
| | |
| | | |
| | | |
| | | def run(pipe_trade, _pipe_strategy, _l2_data_callback: l2_data_transform_protocol.L2DataCallBack)->None: |
| | | logger_system.debug(f"线程ID,l2_client:{threading.current_thread().ident}") |
| | | logger_system.info("L2进程ID:{}", os.getpid()) |
| | | try: |
| | | log.close_print() |
| | |
| | | l2_data_callback.OnMarketData(temp[0], temp[2]) |
| | | else: |
| | | upload_data(temp[0], temp[1], temp[2]) |
| | | time.sleep(0.01) |
| | | |
| | | except Exception as e: |
| | | logger_local_huaxin_l2_error.exception(e) |
| | | logger_local_huaxin_l2_error.error(f"上传普通数据出错:{str(e)}") |
| | | finally: |
| | | time.sleep(0.01) |
| | | |
| | | |
| | | def __run_upload_trading_canceled(l2_data_callback: L2DataCallBack): |
| | |
| | | t.start() |
| | | __upload_trans_threads[code] = t |
| | | logger_local_huaxin_l2_upload.info(f"重新创建L2成交上传线程:{code}") |
| | | time.sleep(3) |
| | | except: |
| | | pass |
| | | finally: |
| | | time.sleep(3) |
| | | t = threading.Thread(target=lambda: upload_daemon(), daemon=True) |
| | | t.start() |
| | | |
| | |
| | | |
| | | def run(trade_response_: TradeResponse, pipe_l2=None, pipe_strategy=None): |
| | | try: |
| | | logger_system.debug(f"线程ID,trade_client:{threading.current_thread().ident}") |
| | | logger_system.info("交易进程ID:{}", os.getpid()) |
| | | __init_trade_data_server() |
| | | global l2pipe |
| | |
| | | # 初始化参数 |
| | | global_data_loader.init() |
| | | |
| | | # 数据服务 |
| | | t1 = threading.Thread(target=createDataServer, name="createDataServer", daemon=True) |
| | | t1.start() |
| | | |
| | | # # 数据服务 |
| | | # t1 = threading.Thread(target=createDataServer, name="createDataServer", daemon=True) |
| | | # t1.start() |
| | | # |
| | | # 交易接口服务 |
| | | t1 = threading.Thread(target=trade_api_server.run, name="trade_api_server", args=(pipe_server, pipe_l2), daemon=True) |
| | | t1.start() |
| | | |
| | | # t1 = threading.Thread(target=trade_api_server.run, name="trade_api_server", args=(pipe_server, pipe_l2), daemon=True) |
| | | # t1.start() |
| | | # |
| | | # redis后台服务 |
| | | t1 = threading.Thread(target=redis_manager.RedisUtils.run_loop, name="redis", daemon=True) |
| | | t1.start() |
| | | |
| | | # 启动L2订阅服务 |
| | | # t1 = threading.Thread(target=redis_manager.RedisUtils.run_loop, name="redis", daemon=True) |
| | | # t1.start() |
| | | # |
| | | # # 启动L2订阅服务 |
| | | t1 = threading.Thread(target=huaxin_client.l2_client.run, name="l2_client", args=(ptl2_l2, psl2_l2, trade_server.my_l2_data_callback), |
| | | daemon=True) |
| | | t1.start() |
| | | |
| | | # 启动华鑫交易服务 |
| | | t1 = threading.Thread(target=huaxin_client.trade_client.run, name="trade_client", |
| | | args=(trade_server.my_trade_response, ptl2_trade, pst_trade), |
| | | daemon=True) |
| | | t1.start() |
| | | # |
| | | # # 启动华鑫交易服务 |
| | | # t1 = threading.Thread(target=huaxin_client.trade_client.run, name="trade_client", |
| | | # args=(trade_server.my_trade_response, ptl2_trade, pst_trade), |
| | | # daemon=True) |
| | | # t1.start() |
| | | |
| | | # 交易服务 |
| | | trade_server.run(pipe_trade, pipe_l1, pipe_l2, huaxin_client.trade_client.process_cmd) |
| | |
| | | |
| | | |
| | | def createDataServer(): |
| | | logger_system.debug(f"线程ID,dataServer:{threading.current_thread().ident}") |
| | | logger_system.info("create DataServer") |
| | | tcpserver = data_server.run("", 9004) |
| | | tcpserver.serve_forever() |
| | |
| | | |
| | | |
| | | def run(pipe_server, pipe_l2): |
| | | logger_system.debug(f"线程ID,trade_api_server:{threading.current_thread().ident}") |
| | | logger_system.info("create TradeApiServer") |
| | | # 拉取交易信息 |
| | | huaxin_trade_data_update.run() |
| | |
| | | |
| | | def run(pipe_trade, pipe_l1, pipe_l2, trade_cmd_callback): |
| | | try: |
| | | logger_system.debug(f"线程ID,trade_server:{threading.current_thread().ident}") |
| | | # 执行一些初始化数据 |
| | | block_info.init() |
| | | |