如何在引发异常之前不更改生成器的情况下恢复生成器?

时间:2019-02-02 14:53:17

标签: python-3.6 praw

我的代码将流式传输来自reddit的新提交(使用PRAW),并且我不希望程序在连接断开时停止运行,因此我将代码包装在try/except块中以进行处理ConnectionError异常可以完成工作,但是当代码尝试恢复流式传输时,似乎发生器(submissions)已退出,并抛出了StopIteration错误。所以我的问题是:有没有办法在生成器抛出ConnectionError之前保存生成器的状态,以便代码不断尝试恢复直到连接返回而又不修改生成器函数?

代码如下:

import praw
import prawcore
import requests


reddit = praw.Reddit()
subreddit = reddit.subreddit('askreddit')
submissions = subreddit.stream.submissions(skip_existing=True, pause_after=0)
while True:
    try:
        print(next(submissions))
    except prawcore.exceptions.RequestException as re:
        if isinstance(re.original_exception,
                      requests.exceptions.ConnectionError):
            print('Connection Error')

使用:

  • Python 3.6.5
  • PRAW 6.1.1
  • Windows 10

0 个答案:

没有答案