feat: 每日消耗任务触发时点 23:00 改为 23:20
- volc_limit_sync:_maybe_trigger_daily_consume 改分钟级判断(23:20 起触发), 线程内 0-10 分钟随机抖动保留,实际执行窗口 23:20~23:30 - volc_consume:main 手动运行门卫同步 23:20 窗口(--force/--dry-run 不受限) - docs/volc-quota-notes §9:consume clamp2 余额快照滞后在最新思路(§4.2 量化 L=149,616)下确认为必改项,方向待定;消耗任务口径同步收紧标记 [x] - 全仓文档/注释 23:00 统一同步为 23:20(AGENTS/README/docker-compose/两 docs)
This commit is contained in:
+9
-7
@@ -2,7 +2,7 @@
|
||||
# 🚀 VolcConsume — 火山免费额度自动消耗任务
|
||||
# ==========================================
|
||||
# 与 volc_limit_sync.py 合并方案的一部分(见 docs/merge-auto-consume.md):
|
||||
# - 每日北京时间 23:00 由 volc_limit_sync 守护线程触发(可手动 --force)
|
||||
# - 每日北京时间 23:20 由 volc_limit_sync 守护线程触发(可手动 --force)
|
||||
# - 洗掉 CONSUME_MONITOR_DAYS 天内过期的资源包额度(FIFO 下即队列头部),
|
||||
# 防止 30 天过期蒸发导致"启动资金"缩水(免费额度规则:消耗 X → 次日返还 X)
|
||||
# - 直连 Ark API(Bearer token,绕过 LiteLLM 限额,避免消耗任务自杀)
|
||||
@@ -12,7 +12,7 @@
|
||||
#
|
||||
# 手动运行:
|
||||
# python volc_consume.py --dry-run # 只算计划不消耗
|
||||
# python volc_consume.py --force # 忽略 23:00 时间限制立即执行
|
||||
# python volc_consume.py --force # 忽略 23:20 时间限制立即执行
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
@@ -471,7 +471,7 @@ def run_consume_model(model, source_groups, order, packages=None, dry_run=False)
|
||||
|
||||
def _run_requests(model, plan, balance_snapshot, source_groups, order):
|
||||
"""
|
||||
循环发送消耗请求。速率:目标 1 小时内完成(23:00 触发,00:00 结算)。
|
||||
循环发送消耗请求。速率:目标 1 小时内完成(23:20 触发,00:00 结算)。
|
||||
"""
|
||||
burned = 0
|
||||
fail_count = 0
|
||||
@@ -481,7 +481,7 @@ def _run_requests(model, plan, balance_snapshot, source_groups, order):
|
||||
# 任务轻松(单次间隔 > MAX_SLEEP_BASE)→ 正常模式 15-40s 伪装,不赶时间
|
||||
# 任务极重(间隔 < 2s)→ 极速模式 1-3s(本场景 plan≤2M 实际不会触发)
|
||||
# 其余 → 动态 ±5s
|
||||
# 目标:23:00 触发、00:00 结算,1 小时内完成(plan=2M ≈ 47 次 × 27s ≈ 21 分钟)
|
||||
# 目标:23:20 触发、00:00 结算,1 小时内完成(plan=2M ≈ 47 次 × 27s ≈ 21 分钟)
|
||||
est_per_req = (MIN_INPUT_CHARS + MAX_INPUT_CHARS) / 2 + 1000
|
||||
est_requests = max(1, plan / est_per_req)
|
||||
interval = int(3600 / est_requests)
|
||||
@@ -594,10 +594,12 @@ def main():
|
||||
force = "--force" in sys.argv
|
||||
|
||||
if not force and not dry_run:
|
||||
beijing_hour = (time.gmtime(time.time()).tm_hour + 8) % 24
|
||||
if beijing_hour != 23:
|
||||
beijing_struct = time.gmtime(time.time() + 8 * 3600)
|
||||
beijing_hour = beijing_struct.tm_hour
|
||||
beijing_min = beijing_struct.tm_min
|
||||
if beijing_hour != 23 or beijing_min < 20:
|
||||
vls.log(
|
||||
f"⏰ 当前北京时间 {beijing_hour} 时,非 23:00 触发窗口。加 --force 强制执行",
|
||||
f"⏰ 当前北京时间 {beijing_hour}:{beijing_min:02d},非 23:20 触发窗口。加 --force 强制执行",
|
||||
level="WARNING",
|
||||
)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user