[英]How to reexecute if an error occurs in python?
我正在使用 Twint(一个 Twitter 刮刀),但不知何故有一个我无法解决的问题。 我想知道是否有一种方法可以在发生错误时等待1分钟并重新执行? 我的代码是这样的:
import twint
geos = ["40.74566208501717, -73.99137569478954", "35.68802408270403, 139.76489869554837", "31.22521968438549, 121.51655148017774"]
for geo in geos:
print(str(geo)+','+'10km')
c = twint.Config()
c.Limit = 20
c.Geo = str(geo)+','+'10km'
twint.run.Search(c)
有时, twint.run.Search(c)
无法正确执行 function。那么,一旦出现错误,有没有办法只再次执行此循环而不重新执行整个循环?
有人会帮助我吗? 任何想法都会非常有帮助。 非常感谢!
如果你想简单地假装错误没有发生,你可以这样做:
try:
twint.run.Search(c)
except WhateverExceptionType:
pass
(将WhateverExceptionType
替换为您看到的实际错误类型)
如果出现错误时您想让整个程序在继续循环之前等待一分钟,请将其放在except
中:
import time
...
try:
twint.run.Search(c)
except WhateverExceptionType:
time.sleep(60)
如果您希望它在等待后重新执行该特定搜索(而不是继续下一个循环迭代),请将其放在except
中。 请注意,如果异常except
的代码引发,那么它将引发except
并停止您的程序。
try:
twint.run.Search(c)
except WhateverExceptionType:
time.sleep(60)
twint.run.Search(c)
您可以执行以下操作以在 60 秒后再次尝试搜索,并且最多重试 10 次:
import time
for geo in geos:
print(str(geo)+','+'10km')
c = twint.Config()
c.Limit = 20
c.Geo = str(geo)+','+'10km'
success=False
retries = 0
while not success and retries <= 10:
try:
twint.run.Search(c)
success=True
except twint.token.RefreshTokenException:
time.sleep(60)
retries += 1
except: # <- catches all other exceptions
retries = 11 # <- e.g. stop trying if another exception was raised
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.