def rate_limited_search(self, tw_search_order, task): """ Search Twitter, sleeping when rate limitations are reached. Args: tw_search_order (TwitterSearchOrder): Search parameters for Twitter. task (object): Celery task running this plugin. Returns: Iterable: Tweets matching search parameters. """ try: return self.client.search_tweets_iterable(tw_search_order) except TwitterSearchException as e: if e.code != 429: raise e reset_value = int(self.client.get_metadata()['x-rate-limit-reset']) reset_datetime = datetime.fromtimestamp(reset_value) delta = reset_datetime - datetime.now() timeout = delta.seconds + 1 logger.info(f'Twitter rate limit reached. Setting Twitter-Lock: ' f'{timeout} seconds.') redis_store.set('Twitter-Lock', reset_value, timeout) exception = CeleryRetry(e, 'Twitter rate limit reached') raise task.retry(exc=exception, countdown=timeout)
def authorized(): print request.args if request.args.get('code'): response = requests.post('https://dashboard.justyo.co/token/', data={ 'code': request.args.get('code'), 'client_id': os.environ.get('YO_CLIENT_ID'), 'client_secret': os.environ.get('YO_CLIENT_SECRET'), 'redirect_uri': os.environ.get('YO_REDIRECT_URI'), 'grant_type': 'authorization_code' }) json_response = response.json() if json_response.get('access_token'): yo_token = json_response.get('access_token') response = requests.get('https://api.justyo.co/me/?access_token=' + yo_token) json_response = response.json() username = json_response.get('username') if username: session['access_token'] = yo_token session['username'] = username session['display_name'] = json_response.get('display_name') slack_user_id = session.get('slack_user_id') if slack_user_id: redis_store.set(slack_user_id, yo_token) del session['slack_user_id'] return render_template('slack.html', done=True) return redirect('/?add=1')
def authorized_yo(): print request.args if request.args.get('code') and request.args.get('state'): response = requests.post('https://dashboard.justyo.co/token/', data={ 'code': request.args.get('code'), 'client_id': YO_STATUS_TWITTER_CLIENT_ID, 'client_secret': YO_STATUS_TWITTER_CLIENT_SECRET, 'redirect_uri': YO_STATUS_TWITTER_REDIRECT_URI, 'grant_type': 'authorization_code' }) json_response = response.json() if json_response.get('access_token'): yo_token = json_response.get('access_token') response = requests.get('https://api.justyo.co/me/?access_token=' + yo_token) json_response = response.json() username = json_response.get('username') if username: session['yo_username'] = username redis_store.set('yo.token.for.twitter.user.id:' + session['twitter_user_id'], yo_token) status_url = 'https://yostat.us/' + session['yo_username'] return render_template('twitter.html', status_url=status_url, done=True) return render_template('twitter.html')