From bcc38a54b2ca8268d7233b1a0e8250d81ca4bd7d Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期二, 05 九月 2023 12:27:42 +0800
Subject: [PATCH] 为交易加锁

---
 huaxin_client/trade_client.py |   66 ++++++++++++++++++---------------
 1 files changed, 36 insertions(+), 30 deletions(-)

diff --git a/huaxin_client/trade_client.py b/huaxin_client/trade_client.py
index 59a2dea..9b530ad 100644
--- a/huaxin_client/trade_client.py
+++ b/huaxin_client/trade_client.py
@@ -152,7 +152,8 @@
     def cancel_buy(self, code, order_sys_id, sinfo):
         if sinfo in self.__cancel_buy_sinfo_set:
             raise Exception(f'鎾ゅ崟璇锋眰宸茬粡鎻愪氦锛歿sinfo}')
-        logger_local_huaxin_trade_debug.info(f"杩涘叆鎾ゅ崟鏂规硶锛歝ode-{code} order_sys_id-{order_sys_id} sinfo-{sinfo}")
+        async_log_util.info(logger_local_huaxin_trade_debug,
+                            f"杩涘叆鎾ゅ崟鏂规硶锛歝ode-{code} order_sys_id-{order_sys_id} sinfo-{sinfo}")
         self.__cancel_buy_sinfo_set.add(sinfo)
         self.req_id += 1
         # 璇锋眰鎾ゅ崟
@@ -536,15 +537,15 @@
                          pRspInfoField: "CTORATstpRspInfoField", nRequestID: "int") -> "void":
         try:
             if pRspInfoField.ErrorID == 0:
-                logger_local_huaxin_trade_debug.info('OnRspOrderAction: OK! [%d]' % nRequestID)
+                async_log_util.info(logger_local_huaxin_trade_debug, 'OnRspOrderAction: OK! [%d]' % nRequestID)
                 threading.Thread(target=lambda: self.__data_callback(TYPE_CANCEL_ORDER, nRequestID,
                                                                      {"sinfo": pInputOrderActionField.SInfo,
                                                                       "orderSysID": pInputOrderActionField.OrderSysID,
                                                                       "cancel": 1}), daemon=True).start()
 
             else:
-                logger_local_huaxin_trade_debug.info('OnRspOrderAction: Error! [%d] [%d] [%s]'
-                                                     % (nRequestID, pRspInfoField.ErrorID, pRspInfoField.ErrorMsg))
+                async_log_util.info(logger_local_huaxin_trade_debug, 'OnRspOrderAction: Error! [%d] [%d] [%s]'
+                                    % (nRequestID, pRspInfoField.ErrorID, pRspInfoField.ErrorMsg))
                 threading.Thread(target=lambda: self.__data_callback(TYPE_CANCEL_ORDER, nRequestID,
                                                                      {"sinfo": pInputOrderActionField.SInfo,
                                                                       "orderSysID": pInputOrderActionField.OrderSysID,
@@ -559,10 +560,10 @@
                             pRspInfoField: "CTORATstpRspInfoField", nRequestID: "int") -> "void":
         try:
             if pInputOrderActionField and pRspInfoField:
-                logger_local_huaxin_trade_debug.info('OnErrRtnOrderAction: Error! [%d] [%d] [%d] [%s]'
-                                                     % (nRequestID, pInputOrderActionField.OrderSysID,
-                                                        pRspInfoField.ErrorID,
-                                                        pRspInfoField.ErrorMsg))
+                async_log_util.info(logger_local_huaxin_trade_debug, 'OnErrRtnOrderAction: Error! [%d] [%d] [%d] [%s]'
+                                    % (nRequestID, pInputOrderActionField.OrderSysID,
+                                       pRspInfoField.ErrorID,
+                                       pRspInfoField.ErrorMsg))
         except:
             logger_local_huaxin_trade_debug.info("OnErrRtnOrderAction: 鎾ゅ崟鍑洪敊")
 
@@ -591,12 +592,13 @@
 
     def OnRtnOrder(self, pOrderField: "CTORATstpOrderField") -> "void":
         try:
-            logger_local_huaxin_trade_debug.info(
-                '[%d] OnRtnOrder: SInfo[%s] InvestorID[%s] SecurityID[%s] OrderRef[%d] OrderLocalID[%s] LimitPrice[%.2f] VolumeTotalOriginal[%d] OrderSysID[%s] OrderStatus[%s] InsertTime[%s]'
-                % (round(time.time() * 1000), pOrderField.SInfo, pOrderField.InvestorID, pOrderField.SecurityID,
-                   pOrderField.OrderRef, pOrderField.OrderLocalID,
-                   pOrderField.LimitPrice, pOrderField.VolumeTotalOriginal, pOrderField.OrderSysID,
-                   pOrderField.OrderStatus, pOrderField.InsertTime))
+            async_log_util.info(logger_local_huaxin_trade_debug,
+                                '[%d] OnRtnOrder: SInfo[%s] InvestorID[%s] SecurityID[%s] OrderRef[%d] OrderLocalID[%s] LimitPrice[%.2f] VolumeTotalOriginal[%d] OrderSysID[%s] OrderStatus[%s] InsertTime[%s]'
+                                % (round(time.time() * 1000), pOrderField.SInfo, pOrderField.InvestorID,
+                                   pOrderField.SecurityID,
+                                   pOrderField.OrderRef, pOrderField.OrderLocalID,
+                                   pOrderField.LimitPrice, pOrderField.VolumeTotalOriginal, pOrderField.OrderSysID,
+                                   pOrderField.OrderStatus, pOrderField.InsertTime))
 
             OrderIDManager.set_system_order_id(pOrderField.SecurityID, pOrderField.SInfo, pOrderField.OrderSysID)
             if pOrderField.OrderStatus != traderapi.TORA_TSTP_OST_Unknown:
@@ -620,10 +622,11 @@
 
     def OnRtnTrade(self, pTradeField: "CTORATstpTradeField") -> "void":
         try:
-            logger_local_huaxin_trade_debug.info(
-                'OnRtnTrade: TradeID[%s] InvestorID[%s] SecurityID[%s] OrderRef[%d] OrderLocalID[%s] Price[%.2f] Volume[%d]'
-                % (pTradeField.TradeID, pTradeField.InvestorID, pTradeField.SecurityID,
-                   pTradeField.OrderRef, pTradeField.OrderLocalID, pTradeField.Price, pTradeField.Volume))
+            async_log_util.info(logger_local_huaxin_trade_debug,
+                                'OnRtnTrade: TradeID[%s] InvestorID[%s] SecurityID[%s] OrderRef[%d] OrderLocalID[%s] Price[%.2f] Volume[%d]'
+                                % (pTradeField.TradeID, pTradeField.InvestorID, pTradeField.SecurityID,
+                                   pTradeField.OrderRef, pTradeField.OrderLocalID, pTradeField.Price,
+                                   pTradeField.Volume))
         except:
             pass
 
@@ -805,7 +808,8 @@
 
     def OnTrade(self, client_id, request_id, sk, type_, data):
         if type_ == 1:
-            async_log_util.info(logger_local_huaxin_trade_debug,f"\n---------------------\n璇锋眰涓嬪崟锛歝lient_id-{client_id} request_id-{request_id}")
+            async_log_util.info(logger_local_huaxin_trade_debug,
+                                f"\n---------------------\n璇锋眰涓嬪崟锛歝lient_id-{client_id} request_id-{request_id}")
             # 涓嬪崟
             # 1-涔� 2-鍗�
             direction = data["direction"]
@@ -835,7 +839,8 @@
                                   request_id)
 
         elif type_ == 2:
-            async_log_util.info(logger_local_huaxin_trade_debug, f"\n---------------------\n璇锋眰鎾ゅ崟锛歝lient_id-{client_id} request_id-{request_id} data-{data}")
+            async_log_util.info(logger_local_huaxin_trade_debug,
+                                f"\n---------------------\n璇锋眰鎾ゅ崟锛歝lient_id-{client_id} request_id-{request_id} data-{data}")
             # 鎾ゅ崟
             direction = data["direction"]
             code = data["code"]
@@ -867,7 +872,7 @@
                                   request_id)
 
     def OnDealList(self, client_id, request_id, sk):
-        logger_local_huaxin_trade_debug.info(f"璇锋眰鎴愪氦鍒楄〃锛歝lient_id-{client_id} request_id-{request_id}")
+        async_log_util.info(logger_local_huaxin_trade_debug, f"璇锋眰鎴愪氦鍒楄〃锛歝lient_id-{client_id} request_id-{request_id}")
         try:
             print("寮�濮嬭姹傛垚浜ゅ垪琛�")
             req_id = self.__tradeSimpleApi.list_traded_orders()
@@ -877,7 +882,7 @@
             SendResponseSkManager.send_error_response("common", request_id, client_id, str(e))
 
     def OnDelegateList(self, client_id, request_id, sk, is_cancel):
-        logger_local_huaxin_trade_debug.info(f"璇锋眰濮旀墭鍒楄〃锛歝lient_id-{client_id} request_id-{request_id}")
+        async_log_util.info(logger_local_huaxin_trade_debug, f"璇锋眰濮旀墭鍒楄〃锛歝lient_id-{client_id} request_id-{request_id}")
         try:
             req_id = self.__tradeSimpleApi.list_delegate_orders(is_cancel)
             req_rid_dict[req_id] = (client_id, request_id, sk)
@@ -886,7 +891,7 @@
                           request_id)
 
     def OnMoney(self, client_id, request_id, sk):
-        logger_local_huaxin_trade_debug.info(f"璇锋眰璐︽埛锛歝lient_id-{client_id} request_id-{request_id}")
+        async_log_util.info(logger_local_huaxin_trade_debug, f"璇锋眰璐︽埛锛歝lient_id-{client_id} request_id-{request_id}")
         try:
             req_id = self.__tradeSimpleApi.get_money_account()
             req_rid_dict[req_id] = (client_id, request_id, sk)
@@ -895,7 +900,7 @@
                           request_id)
 
     def OnPositionList(self, client_id, request_id, sk):
-        logger_local_huaxin_trade_debug.info(f"璇锋眰鎸佷粨锛歝lient_id-{client_id} request_id-{request_id}")
+        async_log_util.info(logger_local_huaxin_trade_debug, f"璇锋眰鎸佷粨锛歝lient_id-{client_id} request_id-{request_id}")
         try:
             req_id = self.__tradeSimpleApi.list_positions()
             req_rid_dict[req_id] = (client_id, request_id, sk)
@@ -1009,9 +1014,10 @@
         if local_order_id:
             if local_order_id not in cls.local_order_id_map and orderSystemId:
                 cls.local_order_id_map[local_order_id] = orderSystemId
-                async_log_util.info( logger_local_huaxin_trade_debug, f"鏈湴璁㈠崟鍙蜂笌绯荤粺璁㈠崟鍙锋槧灏勶紝{code}锛歿local_order_id} {orderSystemId}")
+                async_log_util.info(logger_local_huaxin_trade_debug,
+                                    f"鏈湴璁㈠崟鍙蜂笌绯荤粺璁㈠崟鍙锋槧灏勶紝{code}锛歿local_order_id} {orderSystemId}")
             if local_order_id in cls.not_canceled_local_order_ids:
-                async_log_util.info(logger_local_huaxin_trade_debug,f"鎵ц绛夊緟鎾ゅ崟锛寋code}锛歿local_order_id} {orderSystemId}")
+                async_log_util.info(logger_local_huaxin_trade_debug, f"鎵ц绛夊緟鎾ゅ崟锛寋code}锛歿local_order_id} {orderSystemId}")
                 # 鎵ц鎾ゅ崟
                 cls.not_canceled_local_order_ids.discard(local_order_id)
                 for i in range(3):
@@ -1030,7 +1036,7 @@
 
 # 浜ゆ槗鍙嶉鍥炶皟
 def __traderapi_callback(type, req_id, data):
-    logger_local_huaxin_trade_debug.info("鍥炶皟:type-{} req_id-{}", type, req_id)
+    async_log_util.info(logger_local_huaxin_trade_debug, "鍥炶皟:type-{} req_id-{}", type, req_id)
     key = req_id
     if type == TYPE_ORDER or type == TYPE_CANCEL_ORDER:
         key = data["sinfo"]
@@ -1045,7 +1051,7 @@
                 local_order_id = temp_params[3]
                 data["localOrderId"] = local_order_id
 
-            logger_local_huaxin_trade_debug.info("API鍥炶皟 request_id-{}", request_id)
+            async_log_util.info(logger_local_huaxin_trade_debug, "API鍥炶皟 request_id-{}", request_id)
             # 娴嬭瘯
             # send_response(
             #     json.dumps({"type": "response", "data": {"code": 0, "data": data}, "client_id": client_id,
@@ -1055,10 +1061,10 @@
                 {"type": "response", "data": {"code": 0, "data": data}, "client_id": client_id,
                  "request_id": request_id})
 
-            logger_local_huaxin_trade_debug.info("API鍥炶皟缁撴潫 req_id-{} request_id-{}", req_id, request_id)
+            async_log_util.info(logger_local_huaxin_trade_debug, "API鍥炶皟缁撴潫 req_id-{} request_id-{}", req_id, request_id)
             print("API鍥炶皟缁撴潫")
         else:
-            logger_local_huaxin_trade_debug.info("闈濧PI鍥炶皟 req_id-{}", req_id)
+            async_log_util.info(logger_local_huaxin_trade_debug, "闈濧PI鍥炶皟 req_id-{}", req_id)
             print("闈濧PI鍥炶皟")
             trade_response.OnTradeCallback({"type": "trade_callback", "data": {"code": 0, "data": data, "type": type}})
             # # 闈濧PI鍥炶皟

--
Gitblit v1.8.0