【问题标题】:Twitter Api Python Connection stalled errorTwitter Api Python 连接停止错误
【发布时间】:2017-06-17 20:25:51
【问题描述】:

我正在使用 TwitterAPI python 库,在获取数据时出现此错误

File "/Users/danny/.venv/versions/2.7.9/lib/python2.7/site-packages/TwitterAPI/TwitterAPI.py", line 263, in _iter_stream
    raise TwitterConnectionError('Twitter stream stalled')
TwitterConnectionError: Twitter stream stalled

我正在使用 python 2.7

【问题讨论】:

  • 阅读文档here。有一节是关于stalls的。这应该为您提供有关您正在经历的事情的信息。查找异常将导致几个链接,这些链接提供有关该异常的信息,以提供有关为什么发生这种情况的上下文。
  • @idjaw 好的谢谢让我检查一下

标签: python twitter


【解决方案1】:

停顿是意料之中的事情,您必须在您的 Twitter 客户端中考虑它们(以及其他类型的连接错误)。 TwitterAPI 库确实会检查停顿。当它们发生时,会抛出 TwitterConnectionError。这是一个信号,您只需重试您的请求。您无需设置 90 秒计时器。这是由 TwitterAPI 为您完成的。为了实现真正健壮的代码,您还应该处理TwitterRequestError。以下是处理这两种异常的模板,以保持您的代码运行并遵守 Twitter 的准则:

from TwitterAPI import TwitterAPI
api = TwitterAPI(CONSUMER_KEY,
                 CONSUMER_SECRET,
                 ACCESS_TOKEN_KEY,
                 ACCESS_TOKEN_SECRET)

while True:
    try:
        iterator = api.request('statuses/filter', {'track':'pizza'}).get_iterator()
        for item in iterator:
            if 'text' in item:
                print(item['text'])
            elif 'disconnect' in item:
                event = item['disconnect']
                if event['code'] in [2,5,6,7]:
                    # something needs to be fixed before re-connecting
                    raise Exception(event['reason'])
                else:
                    # temporary interruption, retry request
                    break
    except TwitterRequestError as e:
        if e.status_code < 500:
            # something needs to be fixed before re-connecting
            raise
        else:
            # temporary interruption, retry request
            pass
    except TwitterConnectionError:
        # temporary interruption, retry request
        pass

【讨论】:

  • @Jones 你能把完整的代码包含在重新连接部分吗
  • 除了导入和输入您的 Twitter 密钥之外,代码是完整的。您可以为此重复使用您的代码。但如果不清楚,请参阅this example。重新连接部分就在那里——参见while 循环——由于pass 语句,请求将重新运行。
  • 示例代码现已完成。只需提供您的密钥,它应该可以工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
相关资源
最近更新 更多