Python 设置tweepy用户代理?

Python 设置tweepy用户代理?,python,twitter,tweepy,Python,Twitter,Tweepy,我和tweepy玩了一段时间,但我一直有速率限制问题,出现429个错误。我知道你可以在单独的通话中设置标题,比如 api.get_user('twitter', headers={'User-Agent': 'MyUserAgent'}) 但是有没有一种方法可以将头设置在一个位置,而不必在每次api调用时都这样做呢?Hacky way: import functools class NewAPI(object): def __init__(self, api): sel

我和tweepy玩了一段时间,但我一直有速率限制问题,出现429个错误。我知道你可以在单独的通话中设置标题,比如

api.get_user('twitter', headers={'User-Agent': 'MyUserAgent'})
但是有没有一种方法可以将头设置在一个位置,而不必在每次api调用时都这样做呢?

Hacky way:

import functools
class NewAPI(object):
    def __init__(self, api):
        self.api = api
    def __getattr__(self, key):
        call = getattr(self.api, key)
        @functools.wraps(call)
        def wrapped_call(*args, **kwargs):
            headers = kwargs.pop('headers', {})
            headers['User-Agent'] = 'MyUserAgent' # or make this a class variable/instance variable
            kwargs['headers'] = headers
            return call(*args, **kwargs)
        return wrapped_call

api = NewAPI(api)
print(api.get_user('twitter'))

免责声明:未经测试,因为我没有tweepy。

很抱歉,过了一段时间才回复您。。。我现在正在测试,但是twitter的速率限制。。。你知道什么好的
functools
教程吗?我只是想更好地理解这一点
functools
在这里并不重要。我在那里做的是包装最初的通话
functools.wrapps
是一个很好的实用程序,它使包装后的函数看起来更像原来的函数。