2012-12-03 47 views
0

我正在使用基於Matthew A.Russell所着的「挖掘社交網絡」一書中的模塊twitter和redis來研究Python中的Twitter數據挖掘應用程序。每當我試圖讓朋友和使用Redis的模塊追隨者的信息,它給了我下面的錯誤:Twitter Python程序給出連接錯誤

raise ConnectionError(self._error_message(e)) 
ConnectionError: Error 10061 connecting localhost:6379. No connection could be made because the target machine actively refused it. 

當我不使用Redis的,我可以得到的所有朋友和追隨者的ID。但是我需要Redis對數據執行某些分析工作。我的源代碼如下:

import json 
import locale 
import redis 
from prettytable import PrettyTable 

# Pretty printing numbers 
from twitter__util import pp 

# These functions create consistent keys from 
# screen names and user id values 
from twitter__util import getRedisIdByScreenName 
from twitter__util import getRedisIdByUserId 

SCREEN_NAME = "timoreilly" 

locale.setlocale(locale.LC_ALL, '') 

def calculate(): 
    r = redis.Redis() # Default connection settings on localhost 

    follower_ids = list(r.smembers(getRedisIdByScreenName(SCREEN_NAME, 
         'follower_ids'))) 

    followers = r.mget([getRedisIdByUserId(follower_id, 'info.json') 
         for follower_id in follower_ids]) 
    followers = [json.loads(f) for f in followers if f is not None] 

    freqs = {} 
    for f in followers: 
     cnt = f['followers_count'] 
     if not freqs.has_key(cnt): 
      freqs[cnt] = [] 

     freqs[cnt].append({'screen_name': f['screen_name'], 'user_id': f['id']}) 

    # It could take a few minutes to calculate freqs, so store a snapshot for later use 

    r.set(getRedisIdByScreenName(SCREEN_NAME, 'follower_freqs'), 
      json.dumps(freqs)) 

    keys = freqs.keys() 
    keys.sort() 

    print 'The top 10 followers from the sample:' 

    fields = ['Date', 'Count'] 
    pt = PrettyTable(fields=fields) 
    [pt.set_field_align(f, 'l') for f in fields] 

    for (user, freq) in reversed([(user['screen_name'], k) for k in keys[-10:] 
            for user in freqs[k]]): 
     pt.add_row([user, pp(freq)]) 

    pt.printt() 

    all_freqs = [k for k in keys for user in freqs[k]] 
    avg = reduce(lambda x, y: x + y, all_freqs)/len(all_freqs) 

    print "\nThe average number of followers for %s's followers: %s" \ 
     % (SCREEN_NAME, pp(avg)) 

# psyco can only compile functions, so wrap code in a function 

try: 
    import psyco 
    psyco.bind(calculate) 
except ImportError, e: 
    pass # psyco not installed 

calculate() 

任何和所有的幫助將非常感激。謝謝!

回答

1

這是Redis運行的端口。如果我是你,我會仔細檢查Redis服務器是否在正確的端口和界面上運行。爲了測試,確保你已經安裝Telnet客戶端並執行以下操作:

$ telnet localhost 6379 

如果失敗,那麼Redis的服務器未實際運行在Redis的客戶端庫的預期,它是在默認情況下,在這種情況下,您必須在構造函數參數中爲客戶端提供正確的細節。

+0

我該怎麼做? – Nathan822

+0

你在使用什麼操作系統?如果是Ubuntu或其他Debian衍生產品,則運行以下命令:'sudo apt-get install telnet' –

+0

Windows 7.我已安裝telnet客戶端,並運行命令telnet localhost 6379.如果失敗。輸出是: 正在連接到本地主機...無法在端口6379上打開與主機的通信:連接失敗。 – Nathan822