有没有办法避免我的 python 程序中 Twitter API 中的速率限制错误?

我正在尝试创建一个 Twitter 用户图,为此我编写了以下代码:


import operator

import sys

import time

from urllib.error import URLError

from http.client import BadStatusLine

import json

import twitter

from functools import partial

from sys import maxsize as maxint

import itertools

import networkx

import matplotlib.pyplot as plt


G = networkx.Graph()



# Code and function taken from the twitter cookbook

def oauth_login():

    CONSUMER_KEY = 'xxxx'

    CONSUMER_SECRET = 'xxZD6r'

    OAUTH_TOKEN = 'xxNRYl'

    OAUTH_TOKEN_SECRET = 'xxHYJl'

    auth = twitter.oauth.OAuth(OAUTH_TOKEN, OAUTH_TOKEN_SECRET, CONSUMER_KEY, CONSUMER_SECRET)

    twitter_api = twitter.Twitter(auth=auth)

    return twitter_api



# Code and function taken from the twitter cookbook

def make_twitter_request(twitter_api_func, max_errors=10, *args, **kw):

    # A nested helper function that handles common HTTPErrors. Return an updated

    # value for wait_period if the problem is a 500 level error. Block until the

    # rate limit is reset if it's a rate limiting issue (429 error). Returns None

    # for 401 and 404 errors, which requires special handling by the caller.

    def handle_twitter_http_error(e, wait_period=2, sleep_when_rate_limited=True):

        if wait_period > 3600:  # Seconds

            print('Too many retries. Quitting.', file=sys.stderr)

            raise e

        if e.e.code == 401:

            print('Encountered 401 Error (Not Authorized)', file=sys.stderr)

            return None

        elif e.e.code == 404:

            print('Encountered 404 Error (Not Found)', file=sys.stderr)

            return None

        elif e.e.code == 429:


但是我经常收到此错误,这使我的程序运行速度非常慢


输入的 ID:60784269 已获取 60784269 的 5000 个朋友 ID 总数 已获取 60784269 的 5000 个关注者 ID 总数 遇到 429 错误(超出速率限制) 15 分钟后重试...ZzZ...


有办法解决这个问题吗?让代码运行得更快?我已经阅读了一些文件,但我仍然没有任何清晰的图片。任何帮助表示赞赏。


交互式爱情
浏览 98回答 1
1回答

湖上湖

公共 API 无法绕过速率限制。尽管现在有一个 API v2,它也允许您获取用户并且不会在相同的速率限制下工作。https://developer.twitter.com/en/docs/twitter-api/users/lookup/introduction请注意,此解决方案将是临时的,因为 Twitter 将在某个时候删除对 API v1 的访问。您可以请求 Twitter 访问高级/企业级别的 API,但您必须为此付费。您可以在此处查看速率限制文档:API v1API v2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python