今年早些时候,我编写了一个脚本(Python 3.7)来执行以下操作:
然后循环:
1)随机选择一个单词(random.choice)
2)将其用作Google图片的搜索查询
3)使用BeautifulSoup,选择1到5之间的随机图像结果并下载
4)将其上传为我的蒸汽个人资料照片(从浏览器复制/粘贴了提供的sessionid
,steamLogin
和steamLoginSecure
)。
此脚本效果很好。最近,我想自动获取步骤4所需的cookie,因此我实现了使用SteamValve package与Steam服务进行交互的步骤1.5。
这就是问题所在。我添加的代码非常简单:
def GetCookies():
client = SteamClient()
client.cli_login()
webCookies = client.get_web_session_cookies()
if webCookies == None:
raise Exception("Unable to get web session. Try again later.")
return {"steamLogin": webCookies.get("steamLogin"),
"steamLoginSecure": webCookies.get("steamLoginSecure"),
"sessionid": str(client.session_id),
"steamid": str(client.steam_id)}
我的脚本运行良好,但现在会静默失败。该脚本将停止运行,并显示“ RESTART:Shell”。使用cmd,它只是关闭。没有引发任何错误。通过使用打印,我已经能够确定它总是发生在我脚本中的三个urlopen
语句之一中(步骤0,步骤2或步骤3)。它在第4步(上传)上永远不会失败。当失败时,我无法捕获任何错误。同样,它并不总是在同一地点失败。如果我在第0步之前致电GetCookies()
,则该步骤通常会失败。如果我随后将呼叫移至该位置,则通常会通过所有步骤,然后第二次在步骤2上失败,然后第一次失败。但是有时它会经过第2步,然后在第3步失败。GetCookies()总是成功运行。
基本上,它在失败的地方是不一致的,并且不会引发任何错误。唯一一致的是它在urlopen
语句上失败,并且仅在调用GetCookies()
之后失败。我尝试在在线调试器中运行代码,但代码从未崩溃。是什么原因导致我的脚本在实现GetCookies()
之后,特别是在urlopen
语句后静默失败?我尝试将GetCookies()
移到另一个文件。我应该运行另一个线程还是其他东西?来自GetCookies()
的一些持续过程是否会导致开销并导致程序崩溃?
该脚本有点长,但是我可以根据需要对其进行编辑。对于可以如何防止这些无提示重启的任何建议,我将不胜感激。