Python 设置tweepy用户代理?
我和tweepy玩了一段时间,但我一直有速率限制问题,出现429个错误。我知道你可以在单独的通话中设置标题,比如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
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
是一个很好的实用程序,它使包装后的函数看起来更像原来的函数。