python出错怎么执行?

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)不能运行correctly.So,一旦出错,有没有办法只重新执行这个循环,而不是重新执行整个循环?

有人愿意帮助我吗?任何想法都会很有帮助。非常感谢!

如果你想简单地假装错误没有发生,你可以这样做:

try:
    twint.run.Search(c)
except WhateverExceptionType:
    pass

(将 WhateverExceptionType 替换为您看到的实际错误类型)

如果出现错误时您想让整个程序在继续循环之前等待一分钟,请将其放入 except:

import time

...

    try:
        twint.run.Search(c)
    except WhateverExceptionType:
        time.sleep(60)

如果您希望它在等待后重新执行该特定搜索(而不是继续下一个循环迭代),请将 that 放入 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