簡體   English   中英

Twython速率限制問題

[英]Twython Rate Limit Issue

我想知道如何自動化我的程序以每15分鍾180個請求的最大速率獲取推文,這相當於每個請求的最大數量為100個,總共18,000個推文。 我正在為學校的獨立案例研究創建這個項目。

我希望我的程序避免受到速率限制並最終被終止。 因此,我希望它能夠持續使用每15分鍾的最大請求數,並且能夠讓它在沒有用戶交互的情況下運行24小時,以檢索所有可能用於分析的推文。

這是我的代碼。 它獲取查詢的推文,並將其放入文本文件,但最終得到速率限制。 真的很感激幫助

import logging
import time
import csv
import twython
import json

app_key = ""
app_secret = ""
oauth_token = ""
oauth_token_secret = ""

twitter = twython.Twython(app_key, app_secret, oauth_token, oauth_token_secret)

tweets = []
MAX_ATTEMPTS = 1000000
# Max Number of tweets per 15 minutes
COUNT_OF_TWEETS_TO_BE_FETCHED = 18000 

for i in range(0,MAX_ATTEMPTS):

    if(COUNT_OF_TWEETS_TO_BE_FETCHED < len(tweets)):
    break

    if(0 == i):
        results = twitter.search(q="$AAPL",count='100',lang='en',)

    else:
        results = twitter.search(q="$AAPL",include_entities='true',max_id=next_max_id)

    for result in results['statuses']:
        print result

        with open('tweets.txt', 'a') as outfile:
             json.dump(result, outfile, sort_keys = True, indent = 4)

    try:
        next_results_url_params = results['search_metadata']['next_results']
        next_max_id = next_results_url_params.split('max_id=')[1].split('&')[0]
    except:

        break

你應該使用Twitter的Streaming API

這樣您就可以獲得近乎實時的搜索Feed。 您可以將這些推文盡可能快地寫入文件。

使用track參數,您將只能收到您感興趣的特定推文。

你需要使用Twython Streamer - 你的代碼看起來像這樣:

from twython import TwythonStreamer

class MyStreamer(TwythonStreamer):
    def on_success(self, data):
        if 'text' in data:
            print data['text'].encode('utf-8')

    def on_error(self, status_code, data):
        print status_code

stream = MyStreamer(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
stream.statuses.filter(track='$AAPL')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM