我一直在玩 tweepy,但我一直遇到速率限制问题,出现 429 错误。我知道您可以在单个呼叫中设置标头,例如
api.get_user('twitter', headers={'User-Agent': 'MyUserAgent'})
但是有没有办法将标头设置在一个地方,而不必在每次 api 调用时都这样做?
哈克方式:
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。