You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中指定密钥过期时间设置及批量配置问题

解决方案

问题分析

原代码存在三个核心问题:

  • 每次运行都会重新生成密钥的过期时间,无法保留之前的计时状态
  • 没有持久化存储机制,重启程序后密钥过期信息丢失
  • 仅支持单个固定密钥,无法管理多密钥的过期逻辑

修改后实现代码

import json
from datetime import datetime, timedelta
import os

# 存储密钥过期信息的文件路径
STORAGE_FILE = "key_expirations.json"

def load_key_storage():
    """加载存储的密钥过期信息"""
    if os.path.exists(STORAGE_FILE):
        with open(STORAGE_FILE, "r") as f:
            data = json.load(f)
            # 将字符串格式的时间转成datetime对象
            for key in data:
                data[key] = datetime.fromisoformat(data[key])
        return data
    return {}

def save_key_storage(storage_data):
    """保存密钥过期信息到文件"""
    # 将datetime对象转成字符串格式存储
    serializable_data = {k: v.isoformat() for k, v in storage_data.items()}
    with open(STORAGE_FILE, "w") as f:
        json.dump(serializable_data, f, indent=2)

def check_key_validity(input_key):
    """检查输入密钥的有效性:是否存在、是否过期"""
    storage = load_key_storage()
    
    if input_key not in storage:
        # 密钥首次使用,设置1分钟后过期
        expiration_time = datetime.now() + timedelta(minutes=1)
        storage[input_key] = expiration_time
        save_key_storage(storage)
        return True, expiration_time
    else:
        expiration_time = storage[input_key]
        if datetime.now() > expiration_time:
            return False, expiration_time
        else:
            return True, expiration_time

# 主逻辑
user_input = input("Enter your license Key: ")
is_valid, exp_time = check_key_validity(user_input)

if is_valid:
    print("Successfully Loaded")
    print(f"Expiration: {exp_time.strftime('%Y-%m-%d %H:%M:%S')}")
else:
    print("Key Expired")

input("Press any Key to close")

代码说明

  • 持久化存储:使用JSON文件key_expirations.json保存每个密钥的过期时间,程序重启后仍能读取之前的记录
  • 首次使用计时:当密钥第一次被输入时,才初始化1分钟的过期时间,后续使用不会刷新过期时间
  • 多密钥支持:存储结构采用字典,可同时管理多个不同密钥的过期信息
  • 过期检查:每次输入密钥时,会先读取存储的过期时间,判断当前时间是否已超过过期时间

内容的提问来源于stack exchange,提问作者Oliver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 03:16:05