2012-09-19 3 views
1

나는 잠시 동안 tweepy로 놀았지만, 속도 제한 문제가 계속 발생하여 429 개의 오류가 발생했습니다. 난 당신이tweepy useragent를 보편적으로 설정 하시겠습니까?

api.get_user('twitter', headers={'User-Agent': 'MyUserAgent'}) 

처럼 개별 통화에 헤더를 설정할 수 있지만 API를 호출 할 때마다 그것을해야 한 곳에서 헤더를 설정하지 할 수있는 방법이 알아?

답변

2

해키 방법 :

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을 가지고 있지 않는 한 검증되지 않은.

+0

유감스럽게도 당신에게 돌아 오기까지 시간이 걸렸습니다 ... 지금 테스트 중이지만, 트위터는 속도를 제한하고 있습니다 ... 좋은 functools 튜토리얼을 알고 있습니까? 이걸 조금 더 잘 이해하고 싶습니다. – JKirchartz

+0

'functools'는 중요한 것이 아닙니다. 내가 여기서하고있는 것은 원래의 호출을 감싸는 것이다. 'functools.wraps'는 래핑 된 함수를 원본과 좀 더 비슷하게 보이게하는 멋진 유틸리티입니다. – nneonneo

관련 문제