python - 在 Python 中清除调用堆栈
问题描述
我对 Python 还很陌生,并且停留在一个看似简单的问题上。经过几个月的等待,我想我会放弃并编写自己的机器人来让我的孩子们购买 PS5。但我遇到了堆栈深度问题。
该程序只是查看项目是否可用,如果不可用,则刷新页面并重试。但是我在 1000 次调用后抛出异常。我一直在寻找一种在 Python 中清除堆栈的方法,但没有找到任何东西。
我还尝试在堆栈 > 1000 时重新启动程序os. execv()
。但这会引发 Exec 格式错误。
以下是删除了所有登录和设置内容的截断版本。预先感谢您的任何帮助!
def click_and_buy():
try:
print('trying to buy')
buy_now = driver.find_element_by_xpath('//*[@id="buy-now-button"]')
buy_now.click()
except Exception as e:
print(len(inspect.stack(0)))
if len(inspect.stack(0)) < 5:
click_and_buy()
time.sleep(1)
else:
restart()
def restart():
# os.system('ps5_bots.py')
os.execv(__file__, sys.argv)
if __name__ == '__main__':
click_and_buy()
解决方案
递归不适合无限重复。这是一个xy 问题。
而是通过使用 while 循环使方法迭代。或者用另一个会调用循环的方法包装该方法:
def click_and_buy():
print('trying to buy')
buy_now = driver.find_element_by_xpath('//*[@id="buy-now-button"]')
buy_now.click()
def click_and_buy_repeated():
while True:
click_and_buy()
if __name__ == '__main__':
click_and_buy_repeated()
推荐阅读
- java - Getter 在不同的类中返回 null
- r - 基于 R 中的另一个文件注释文件 - dplyr 或 tidyverse
- graphql - Nest 找不到 GraphQLModule 元素
- git - 如何将存储库的子文件夹及其来自不同分支的镜像变成独立的存储库?
- powershell - 仅运行变量但变量未“捕获”的 powershell 脚本
- python-3.x - 为 Cloud SQL API 获取 Google Cloud 访问令牌以在 Cloud Function 中导入 CSV
- python - Python2.7中的多处理
- chef-infra - 如何应用我在 Chef 的 Run_list 中包含的食谱?
- verilog - 为什么我的输出没有被赋值?
- string - 如何在 Elixir 中将 BitString 转换为字符串?