如何实现add_cart函数报错重试加sleep延时,解决脚本停止运行问题
代码问题修正说明
现存问题整理
- 缺少
requests库导入语句,调用requests.post会直接抛出未定义报错,这是VS Code终端无法运行的核心原因 - 仅完成
add_cart函数定义,未在代码末尾添加实际调用逻辑,脚本运行后不会执行加购逻辑,直接退出 - 现有重试逻辑仅打印日志,没有实际重复调用
add_cart的代码 - 未在调用函数前添加2秒等待的逻辑
修正后完整代码
import json from datetime import datetime import time import os import requests # 新增缺失的requests库导入 cookies = { # 你的隐私内容保持不变 } headers = { # 你的隐私内容保持不变 } atcPayload = { # 你的隐私内容保持不变 } def add_cart(cookies, headers, atcPayload, max_retry=3): retry_count = 0 while retry_count < max_retry: response = requests.post('apiurl', headers=headers, cookies=cookies, data=atcPayload) # 新增状态码校验,避免接口异常时json解析报错 if response.status_code != 200: print(f"请求异常,状态码:{response.status_code},1秒后重试") retry_count +=1 time.sleep(1) continue data = response.json() print("adding") if data["error"] == 'true': print("retrying cart") retry_count +=1 time.sleep(1) else: print("加购成功") return True print(f"达到最大重试次数{max_retry},加购失败") return False # 执行逻辑:先等待2秒,再调用加购函数 if __name__ == "__main__": time.sleep(2) add_cart(cookies, headers, atcPayload)
调整说明
- 新增
import requests导入语句,解决依赖缺失的运行报错 - 新增
if __name__ == "__main__"入口判断,符合Python脚本规范 - 入口处先执行
time.sleep(2)满足2秒等待的需求,再调用加购函数 - 函数内补充完整重试逻辑,设置默认最大重试次数为3,避免无限重试占用资源
- 新增响应状态码校验逻辑,避免接口返回非200状态时JSON解析报错导致脚本崩溃
内容的提问来源于stack exchange,提问作者Steve Olla
相关产品推荐
相关产品推荐

