|
|
@@ -80,6 +80,7 @@ mexc_data = {
|
|
|
"account_info": {},
|
|
|
"deposit_list": [],
|
|
|
"withdraw_list": [],
|
|
|
+ "coin_info_map": {}, # 處理過的幣種信息,coin_info_map[coin][network]
|
|
|
}
|
|
|
mexc_lock = threading.Lock()
|
|
|
|
|
|
@@ -287,11 +288,14 @@ def update_mexc_data_periodically():
|
|
|
"""
|
|
|
global mexc_data
|
|
|
|
|
|
+ # 每60秒獲取一次coin_info
|
|
|
+ coin_info_get_delay = 60
|
|
|
while True:
|
|
|
try:
|
|
|
new_account_info = None
|
|
|
new_withdraw_list = None
|
|
|
new_deposit_list = None
|
|
|
+ new_coin_info_list = None
|
|
|
|
|
|
# 1. new_account_info
|
|
|
try:
|
|
|
@@ -335,11 +339,39 @@ def update_mexc_data_periodically():
|
|
|
except Exception as e:
|
|
|
logger.error(f"从 Mexc 获取 withdraw_list 失败: {e}, {new_withdraw_list}")
|
|
|
|
|
|
+ # 4. new_coin_info list
|
|
|
+ try:
|
|
|
+ if coin_info_get_delay >= 60:
|
|
|
+ coin_info_get_delay = 0
|
|
|
+ new_coin_info_list = mexc.wallet.get_coinlist()
|
|
|
+
|
|
|
+ if not isinstance(new_coin_info_list, list):
|
|
|
+ raise Exception("幣種信息獲取錯誤")
|
|
|
+
|
|
|
+
|
|
|
+ # 處理幣種信息
|
|
|
+ new_coin_info_map = {}
|
|
|
+ for coin_info in new_coin_info_list:
|
|
|
+ new_coin_info_map[coin_info['coin']] = {}
|
|
|
+
|
|
|
+ for network in coin_info['networkList']:
|
|
|
+ new_coin_info_map[coin_info['coin']][network['netWork']] = network
|
|
|
+
|
|
|
+ with mexc_lock:
|
|
|
+ mexc_data['coin_info_map'] = new_coin_info_map
|
|
|
+
|
|
|
+ # logger.info(f'coin_info_map: {new_coin_info_map['USDT']}')
|
|
|
+ except Exception as e:
|
|
|
+ logger.error(f"从 Mexc 获取 withdraw_list 失败: {e}, {new_withdraw_list}")
|
|
|
+
|
|
|
except Exception as e:
|
|
|
# 捕获线程循环中的其他潜在错误
|
|
|
logger.error(f"数据更新线程发生未知错误: {e}")
|
|
|
traceback.print_exc()
|
|
|
|
|
|
+ # 幣種信息處理的delay
|
|
|
+ coin_info_get_delay = coin_info_get_delay + 1
|
|
|
+
|
|
|
# 等待 1s
|
|
|
time.sleep(1)
|
|
|
|