From bcc38a54b2ca8268d7233b1a0e8250d81ca4bd7d Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期二, 05 九月 2023 12:27:42 +0800 Subject: [PATCH] 为交易加锁 --- l2/l2_data_manager_new.py | 18 ++++++++++++++++-- 1 files changed, 16 insertions(+), 2 deletions(-) diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py index c40d165..6bb11bf 100644 --- a/l2/l2_data_manager_new.py +++ b/l2/l2_data_manager_new.py @@ -1,5 +1,6 @@ import io import logging +import threading import time as t from code_attribute import big_money_num_manager, code_volumn_manager, code_data_util, industry_codes_sort, \ @@ -206,6 +207,7 @@ class L2TradeDataProcessor: unreal_buy_dict = {} volume_rate_info = {} + __trade_thread_lock_dict = {} __codeActualPriceProcessor = CodeActualPriceProcessor() __ths_l2_trade_queue_manager = trade_queue_manager.thsl2tradequeuemanager() __thsBuy1VolumnManager = trade_queue_manager.THSBuy1VolumnManager() @@ -595,8 +597,13 @@ return False else: l2_log.debug(code, "鍙互涓嬪崟锛屽師鍥狅細{}", reason) - + if code not in cls.__trade_thread_lock_dict: + cls.__trade_thread_lock_dict[code] = threading.RLock() + cls.__trade_thread_lock_dict[code].acquire() try: + + + l2_log.debug(code, "寮�濮嬫墽琛屼拱鍏�") trade_manager.start_buy(code, capture_timestamp, last_data, last_data_index) @@ -616,7 +623,7 @@ pass finally: # l2_log.debug(code, "m鍊煎奖鍝嶅洜瀛愶細{}", l2_trade_factor.L2TradeFactorUtil.factors_to_string(code)) - pass + cls.__trade_thread_lock_dict[code].release() return True # 鏄惁鍙互鍙栨秷 @@ -916,7 +923,11 @@ @classmethod def __cancel_buy(cls, code): + # 鍔犻攣 + if code not in cls.__trade_thread_lock_dict: + cls.__trade_thread_lock_dict[code] = threading.RLock() try: + cls.__trade_thread_lock_dict[code].acquire() l2_log.debug(code, "寮�濮嬫墽琛屾挙鍗�") trade_manager.start_cancel_buy(code) l2_log.debug(code, "鎵ц鎾ゅ崟鎴愬姛") @@ -925,6 +936,9 @@ logging.exception(e) l2_log.debug(code, "鎵ц鎾ゅ崟寮傚父锛歿}", str(e)) return False + finally: + cls.__trade_thread_lock_dict[code].release() + @classmethod def cancel_buy(cls, code, msg=None, source="l2"): -- Gitblit v1.8.0