feat: unify proxy config and centralize runtime logging
This commit is contained in:
1 parent
7af21bed6a
commit
80f2a82c19
9 files changed
+174
-43
No files matched your search
+23
-19
@@ -12,9 +12,13 @@ import httpx
|
||||
from typing import Optional, Dict, List, Any
|
||||
from dataclasses import dataclass
|
||||
from dotenv import load_dotenv
|
||||
from utils.network_proxy import apply_global_proxy_from_env, get_proxy_url
|
||||
from utils.project_logger import get_project_logger
|
||||
|
||||
# 加载环境变量
|
||||
load_dotenv()
|
||||
apply_global_proxy_from_env()
|
||||
logger = get_project_logger("api.polymarket_client")
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -46,7 +50,7 @@ class PolymarketClient:
|
||||
self.private_key = private_key or os.getenv("POLYMARKET_PRIVATE_KEY")
|
||||
|
||||
# 配置代理
|
||||
proxy = os.getenv("SOCKS5_PROXY") if os.getenv("USE_PROXY", "false").lower() == "true" else None
|
||||
proxy = get_proxy_url()
|
||||
|
||||
# HTTP客户端 - 禁用压缩避免brotli问题
|
||||
self.http = httpx.Client(
|
||||
@@ -79,9 +83,9 @@ class PolymarketClient:
|
||||
# 获取或创建API凭证
|
||||
self.clob_client.set_api_creds(self.clob_client.create_or_derive_api_creds())
|
||||
|
||||
print("✓ CLOB客户端初始化成功")
|
||||
logger.info("CLOB客户端初始化成功")
|
||||
except Exception as e:
|
||||
print(f"⚠️ CLOB客户端初始化失败: {e}")
|
||||
logger.warning("CLOB客户端初始化失败: %s", e)
|
||||
self.clob_client = None
|
||||
|
||||
def search_markets(self, query: str = "BTC", limit: int = 20) -> List[Dict]:
|
||||
@@ -111,7 +115,7 @@ class PolymarketClient:
|
||||
filtered = [m for m in markets if query.lower() in m.get("question", "").lower()]
|
||||
return filtered
|
||||
except Exception as e:
|
||||
print(f"搜索市场失败: {e}")
|
||||
logger.error("搜索市场失败: %s", e)
|
||||
return []
|
||||
|
||||
def search_btc_1h_markets(self) -> List[Dict]:
|
||||
@@ -150,7 +154,7 @@ class PolymarketClient:
|
||||
|
||||
return btc_1h_markets
|
||||
except Exception as e:
|
||||
print(f"搜索BTC 1H市场失败: {e}")
|
||||
logger.error("搜索BTC 1H市场失败: %s", e)
|
||||
return []
|
||||
|
||||
def get_market_info(self, condition_id: str) -> Optional[MarketInfo]:
|
||||
@@ -179,7 +183,7 @@ class PolymarketClient:
|
||||
end_date=data.get("endDate", ""),
|
||||
)
|
||||
except Exception as e:
|
||||
print(f"获取市场信息失败: {e}")
|
||||
logger.error("获取市场信息失败: %s", e)
|
||||
return None
|
||||
|
||||
def get_orderbook(self, token_id: str) -> Dict:
|
||||
@@ -200,7 +204,7 @@ class PolymarketClient:
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
except Exception as e:
|
||||
print(f"获取订单簿失败: {e}")
|
||||
logger.error("获取订单簿失败: %s", e)
|
||||
return {}
|
||||
|
||||
def get_price(self, token_id: str) -> Optional[float]:
|
||||
@@ -222,7 +226,7 @@ class PolymarketClient:
|
||||
data = response.json()
|
||||
return float(data.get("price", 0))
|
||||
except Exception as e:
|
||||
print(f"获取价格失败: {e}")
|
||||
logger.error("获取价格失败: %s", e)
|
||||
return None
|
||||
|
||||
def place_market_order(
|
||||
@@ -243,7 +247,7 @@ class PolymarketClient:
|
||||
订单响应
|
||||
"""
|
||||
if not self.clob_client:
|
||||
print("❌ CLOB客户端未初始化,无法下单")
|
||||
logger.error("CLOB客户端未初始化,无法下单")
|
||||
return None
|
||||
|
||||
try:
|
||||
@@ -260,10 +264,10 @@ class PolymarketClient:
|
||||
|
||||
# 提交订单
|
||||
response = self.clob_client.post_order(order)
|
||||
print(f"✓ 订单已提交: {response}")
|
||||
logger.info("订单已提交: %s", response)
|
||||
return response
|
||||
except Exception as e:
|
||||
print(f"❌ 下单失败: {e}")
|
||||
logger.error("下单失败: %s", e)
|
||||
return None
|
||||
|
||||
def place_limit_order(
|
||||
@@ -286,7 +290,7 @@ class PolymarketClient:
|
||||
订单响应
|
||||
"""
|
||||
if not self.clob_client:
|
||||
print("❌ CLOB客户端未初始化,无法下单")
|
||||
logger.error("CLOB客户端未初始化,无法下单")
|
||||
return None
|
||||
|
||||
try:
|
||||
@@ -304,10 +308,10 @@ class PolymarketClient:
|
||||
|
||||
# 提交订单
|
||||
response = self.clob_client.post_order(order)
|
||||
print(f"✓ 限价单已提交: {response}")
|
||||
logger.info("限价单已提交: %s", response)
|
||||
return response
|
||||
except Exception as e:
|
||||
print(f"❌ 下单失败: {e}")
|
||||
logger.error("下单失败: %s", e)
|
||||
return None
|
||||
|
||||
def get_positions(self) -> List[Dict]:
|
||||
@@ -318,14 +322,14 @@ class PolymarketClient:
|
||||
仓位列表
|
||||
"""
|
||||
if not self.clob_client:
|
||||
print("❌ CLOB客户端未初始化")
|
||||
logger.error("CLOB客户端未初始化")
|
||||
return []
|
||||
|
||||
try:
|
||||
positions = self.clob_client.get_positions()
|
||||
return positions
|
||||
except Exception as e:
|
||||
print(f"获取仓位失败: {e}")
|
||||
logger.error("获取仓位失败: %s", e)
|
||||
return []
|
||||
|
||||
def cancel_order(self, order_id: str) -> bool:
|
||||
@@ -339,15 +343,15 @@ class PolymarketClient:
|
||||
是否成功
|
||||
"""
|
||||
if not self.clob_client:
|
||||
print("❌ CLOB客户端未初始化")
|
||||
logger.error("CLOB客户端未初始化")
|
||||
return False
|
||||
|
||||
try:
|
||||
self.clob_client.cancel(order_id)
|
||||
print(f"✓ 订单已取消: {order_id}")
|
||||
logger.info("订单已取消: %s", order_id)
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f"❌ 取消订单失败: {e}")
|
||||
logger.error("取消订单失败: %s", e)
|
||||
return False
|
||||
|
||||
def close(self):
|
||||
|
||||
Reference in new issue
Block a user