我正在寻找一种方法来处理使用PRAW(Python)的Reddit bot的超时异常。它每天至少超时一次,并且它有一个变量编码,因此我必须更新变量然后再次手动运行bot。我正在寻找一种自动处理这些异常的方法。我看了尝试:除了:,但我担心在time.sleep(10)之后添加一个断点会完全停止循环。无论是否超时,我希望它继续运行循环。下面是一段代码示例。
def run_bot():
# Arbitrary Bot Code Here
# This is at the bottom of the code, and it runs the above arbitrary code every 10 seconds
while True:
try:
run_bot()
time.sleep(10)
except:
# Don't know what goes here
答案 0 :(得分:2)
这取决于发生超时时您想要做什么。
你可以让pass
无所事事并继续循环。
try:
run_bot()
except:
pass
在您的情况下,最好将其明确写为
try:
run_bot()
except:
continue
但您也可以在except子句中添加一些日志记录
try:
run_bot()
except e:
print 'Loading failed due to Timeout'
print e
要确保循环始终处于休眠状态,您可以执行以下操作:
nr_of_comments = 0
def run_bot():
# do stuff
nr_of_comments =+ 1
while True:
sleep(10)
try:
run_bot()
except e:
continue
答案 1 :(得分:1)
最后将睡眠移到最后会解决你的问题,我猜。无论是否发生异常,finally块都会运行。
def run_bot():
# Arbitrary Bot Code Here
# This is at the bottom of the code, and it runs the above arbitrary code every 10 seconds
while True:
try:
run_bot()
except:
from traceback import format_exc
print "Exception happened:\n%s" % (format_exc())
finally:
time.sleep(10)