修复 load_markets 超时后狂打交易所:失败退避 90 秒,避免反复请求导致封 IP。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -506,6 +506,18 @@ if OKX_API_KEY and OKX_API_SECRET and OKX_API_PASSPHRASE:
|
||||
exchange_options.password = OKX_API_PASSPHRASE
|
||||
|
||||
MARKETS_LOADED = False
|
||||
_MARKETS_GUARD = None
|
||||
|
||||
|
||||
def _get_markets_guard():
|
||||
global _MARKETS_GUARD
|
||||
if _MARKETS_GUARD is None:
|
||||
from lib.trade.markets_load_guard_lib import MarketsLoadGuard
|
||||
|
||||
_MARKETS_GUARD = MarketsLoadGuard(backoff_sec=90.0, label="okx markets")
|
||||
return _MARKETS_GUARD
|
||||
|
||||
|
||||
ACCOUNT_BALANCE_CACHE = {
|
||||
"updated_at": 0.0,
|
||||
"funding_usdt": None,
|
||||
@@ -2867,10 +2879,16 @@ def build_okx_order_params(direction, reduce_only=False):
|
||||
|
||||
|
||||
def ensure_markets_loaded(force=False):
|
||||
"""加载 OKX markets;失败后退避,避免超时循环狂打 API."""
|
||||
global MARKETS_LOADED
|
||||
if force or not MARKETS_LOADED:
|
||||
exchange.load_markets(reload=force)
|
||||
guard = _get_markets_guard()
|
||||
guard.loaded = bool(MARKETS_LOADED)
|
||||
try:
|
||||
guard.ensure(lambda: exchange.load_markets(reload=force), force=force)
|
||||
MARKETS_LOADED = True
|
||||
except Exception:
|
||||
MARKETS_LOADED = False
|
||||
raise
|
||||
|
||||
|
||||
def _okx_algo_trigger_price_str(exchange_symbol, price):
|
||||
|
||||
Reference in New Issue
Block a user