繁体   English   中英

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)无法正确执行 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM