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

Python函数间传递Token遇过期更新失效问题求助

问题解决:Token过期后无法更新全局变量导致接口调用失败

问题根源

  1. 原代码检测到Token过期时,仅调用producttoken()获取新Token,但未将返回值赋值给全局变量tokens,后续请求仍使用旧Token
  2. product_delete函数内未声明tokens为全局变量,无法修改全局的tokens值

修改后的完整代码

import requests
import json

def producttoken():
    url = "https://productapi.com/tokens"
    payload = json.dumps({
        "Username": "*",
        "AppKey": "USER",
        "Hash": "hzh8123sdgxzc123sdfdfhI1tOY="
    })
    headers = {'Content-Type': 'application/json'}
    response = requests.request("POST", url, headers=headers, data=payload)
    jtoken = json.loads(response.text)
    token = jtoken['token']
    print("token taken")
    return token

tokens = producttoken()
counter = 0

def product_delete(product_id):
    global tokens  # 声明使用全局变量tokens
    product_delete_url = f"https://productapi.com/products/id/{product_id}"
    headers = {
        'authorization': f"Token {tokens}",  # 修复授权头格式,添加空格
        'cache-control': "no-cache",
    }
    response = requests.request("DELETE", product_delete_url, headers=headers)
    r = response.text
    
    if "expired_token" in r:
        print("token renewed")
        tokens = producttoken()  # 更新全局Token
        # 使用新Token重新发起请求
        headers['authorization'] = f"Token {tokens}"
        response = requests.request("DELETE", product_delete_url, headers=headers)
        r = response.text
    
    print(r)
    return r

with open('list.csv','r') as f:  # 用with语句安全处理文件
    for line in f:
        line = line.rstrip('\n')
        product_id = line.split(';')[0]
        counter += 1
        product_delete(product_id)
        print(counter)

关键修改说明

  • 添加global tokens声明:让函数有权修改全局的tokens变量
  • 更新全局Token:检测到过期时,将新获取的Token赋值给tokens
  • 重试请求:更新Token后重新发起DELETE请求,确保当前产品ID能被正常处理
  • 修复授权头格式:原代码"Token"+tokens缺少空格,不符合标准授权格式,改为f"Token {tokens}"
  • 使用with语句处理文件:自动管理文件关闭,避免资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 06:15:40