我正在使用tweepy从twitter上获取一些对话。如果存在连接问题,Tweepy有一个讨厌的破坏习惯,所以我正在尝试处理这个并且如果存在连接问题则继续重试,但是我很难在分页游标时弄清楚如何执行此操作。
这是我的代码:
chains = []
for status in tweepy.Cursor(api.search, q='the&filter:replies', count=100).items():
try:
status_chain = get_status_chain(api, status.id_str)
if len(status_chain) > 9:
chains.append(status_chain)
except Exception as e:
# We hit a private message or a connection issue, skip to the next.
print('Error: {error}. Retrying.'.format(error=e), file=sys.stderr)
continue
print(len(chains))
if len(chains) > 99:
break
这里有两个问题。最大的问题是try / except仅涵盖get_status_chain()
中的调用。如果for status in tweepy.Cursor(api.search, q='the&filter:replies', count=100).items()
行出现问题,则异常将无法处理,我的程序将停止。如果在这里发生错误,我想继续在同一点重试,即不再重新启动for循环。
第二个问题是,如果我们遇到连接问题,我真的想重新尝试再次使用相同的链,而不是仅仅进入下一个链,但我不确定如何干净利落地做到这一点。