更新 gpdm/stock.py
This commit is contained in:
parent
d986198103
commit
b7a6347dd3
@ -20,6 +20,27 @@ QUOTE_API_URL = "https://api.mairuiapi.com/hsrl/ssjy/{}/{}"
|
||||
DEFAULT_LICENCE = "3E81CB37-4BCE-4DAF-B0AC-AEA069A58973"
|
||||
FALLBACK_TEXT = "股票查询失败,请稍后再试。"
|
||||
|
||||
# 防重复标记:5秒内防止同一股票代码被重复查询
|
||||
_LOCK_FILE = os.path.join(os.path.dirname(__file__), ".stock_lock")
|
||||
_LOCK_TTL = 5 # 秒
|
||||
|
||||
|
||||
def _acquire_lock(stock_code: str) -> bool:
|
||||
"""尝试获取锁,成功返回True,失败(被锁定)返回False"""
|
||||
import time
|
||||
try:
|
||||
if os.path.exists(_LOCK_FILE):
|
||||
with open(_LOCK_FILE, "r") as f:
|
||||
locked_code, lock_time = f.read().strip().split("|")
|
||||
lock_time = float(lock_time)
|
||||
if locked_code == stock_code and time.time() - lock_time < _LOCK_TTL:
|
||||
return False # 还在锁定期内,跳过
|
||||
with open(_LOCK_FILE, "w") as f:
|
||||
f.write(f"{stock_code}|{time.time()}")
|
||||
except Exception:
|
||||
pass
|
||||
return True
|
||||
|
||||
# 股票名称 → 代码映射(常用 A 股)
|
||||
STOCK_NAME_MAP = {
|
||||
# 指数
|
||||
@ -278,6 +299,10 @@ def main() -> int:
|
||||
sys.stdout.write("\n")
|
||||
return 0
|
||||
|
||||
# 防重复:5秒内相同股票不重复查询
|
||||
if not _acquire_lock(stock_code):
|
||||
return 0
|
||||
|
||||
data = fetch_stock_quote(stock_code)
|
||||
if not data:
|
||||
sys.stdout.write(FALLBACK_TEXT)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user