close

如何自動將的Twitter信息同步到國內的新浪微博、開心網、人人網等國內SNS網站,我先前曾經介紹過一個同步方法,該方法雖能實現同步功能,但是同步不是實時的,有大約一小時左右的時差,這個時差是由TwitterFeed引起的,同時該方法的設置較為繁瑣,需要多次翻牆。

  因此,我開始嘗試一種新的同步方法,開發了一個定時自動讀取並同步Twitter信息的Python程序,以簡化同步的流程,並縮短同步時間,做到基本實時同步功能。原先的同步的流程圖是: twitter -> appspot -> twitterfeed -> ping.fm -> customurl -> huotu -> 新浪微博,新的同步流程變成了: twitter -> appspot -> huotu -> 新浪微博,步驟大為簡化,只需在GAE上設置一個定時執行的計劃任務即可。

  由於GAE支持Cron Job計劃任務,因此,我們的Python程序可以實現每分鐘自動調用一次,調用的時候,先從Twitter上抓取用戶最新的消息,抓取成功後,將消息同步到嘀咕火兔,然後分發到新浪微博、開心網等,如果設置為每分鐘執行的話,同步時差只有一分鐘左右的時間,基本實現了實時同步Twitter信息到新浪微博等SNS網站的功能。

  該程序Python程序我在GAE上調試並不太順利,按照官方的說明配置好了cron.yaml文件,但是更新twitter.py之後,Cron Job計劃任務還是不起作用,後台也看不到相關的Cron Job任務。

  後來經過一番研究,終於解決了GAE中Python的Cron Job計劃任務問題,原因很簡單,因為我的「Google App Engine SDK for Python」是很久以前安裝的,那時候GAE還不支持計劃任務,因此無法更新cron.yaml文件,重新下載了一個最新版本的「Google App Engine SDK for Python」安裝後,Cron Job計劃任務更新就成功了。

  不過,新的問題又來了,我發現該應用調用Twitter API的時候,失敗率非常高,幾乎有一半的情況,調用的時候會提示「Rate limit exceeded. Clients may not make more than 150 requests per hour.」,這讓我懷疑GAE的外部IP是不是非常少,還有很多第三方程序在GAE上調用Twitter API,才導致每小時的調用超過150次,否則的話,光我自己的調用絕對不會有這麼高的頻率,大概是因為Twitter沒有將GAE的IP設置為白名單,如果有一天Twitter不限制GAE的IP,那應該就沒什麼問題了。

  安裝使用說明:

  下載方法,使用TortoiseSVN檢出這個SVN地址,然後,編輯app.yaml,修改為自己的appspot應用名,接著,修改twitter.py文件的最後一行,將自己的Twitter用戶名,嘀咕火兔用戶名和密碼分別填入,cron.yaml文件裡是計劃任務設置,然後就可以按照此文的方法進行發佈,執行 appcfg.py update 目錄名,使用Gmail帳號和密碼,就可以發佈了。

  發佈之後,GAE就可以定時執行twitter.py程序,由於定時執行可以設置最短為1分鐘,因此同步速度很快,基本可以實現即時自動同步的效果。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 張小翔 ... 的頭像
    張小翔 ...

    張小翔 ...

    張小翔 ... 發表在 痞客邦 留言(0) 人氣()