使用 Tweepy 时处理连接错误

Fil*_*ipa 1 python tweepy twitterapi-python

希望你一切都好。

我正在尝试使用 tweepy 库长时间连续提取推文。为此,我有一个无限循环运行的 python 脚本。唯一的问题是,每次连接失败时,由于任何可能的原因,我的脚本都会崩溃,我将不得不重新启动它。所以我想让它特别针对连接错误,为此我使用 try... except 条件,但它似乎不起作用。我已经尝试了网上找到的所有内容,但没有任何效果,有人可以帮助我吗?

这是我的代码:

consumer_key = ""
consumer_secret = ""
access_token = ""
access_token_secret = ""

auth = tweepy.OAuth1UserHandler(
   consumer_key, consumer_secret,
   access_token, access_token_secret
)
api = tweepy.API(auth)

city = 'LX'
country = 'PT'
coord = '38.736946,-9.142685'
radius = '25km'

while True:
    today = datetime.now()

    if len(str(today.month)) == 1:
        month = str(0) + str(today.month)
    else:
        month = str(today.month)    
    n=10
    tweets=tweepy.Cursor(api.search_tweets,q="",geocode=coord+','+radius,tweet_mode="extended").items(n)
 
    fname = f'{country}_{city}_{today.day}{month}{str(today.year)[2:]}.json'

    with open(fname, 'a') as outfile:
        for tweet in tweets:
            try: 
                outfile.write(json.dumps(tweet._json))
                outfile.write('\n')
            except:
                os.system(f'echo error >> log_file.log')
                print('error')
                pass
        outfile.close()
    time.sleep(10)
Run Code Online (Sandbox Code Playgroud)

(这是示例代码,因此可能有一些拼写错误)在 except 子句中我已经尝试过tweepy.TweepyException但也没有结果。为了模拟连接错误,我在运行脚本时关闭了互联网,但我不断收到错误并且脚本崩溃,而不是仅仅给我的 except 块并继续运行

1ex*_*ime 6

我曾经一次运行 tweepy 几个月。这是我解决问题的强力方法:创建一个名为forever.py或任何你想要的文件并使用 popen

#!/usr/bin/python3
from subprocess import Popen
import sys

filename = sys.argv[1]
arg1 = sys.argv[2]
while True:
    print("\nStarting " + filename)
    p = Popen("python3 " + filename + ' ' + arg1, shell=True)
    p.wait()
Run Code Online (Sandbox Code Playgroud)

然后从命令行:

python3 forever.py yourpythonscript.py arg1
Run Code Online (Sandbox Code Playgroud)