2013-10-23 29 views
3

我希望能夠讓我的twython應用程序長時間運行而無需用戶交互。它只是打印出針對我的推文。該計劃是工作,但一段時間後,我得到了以下錯誤:Twython連接超時。如何正確重新啓動

HTTPSConnectionPool(host='api.twitter.com', port=443): Max retries exceeded with url: /1.1/statuses/mentions_timeline.json?count=20&since_id=392227122070056960 (Caused by <class 'socket.error'>: [Errno 104] Connection reset by peer) 

我使用REST API,而不是流。

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET) 

然後我找回提到有:將twython對象與創建

mentions = twitter.get_mentions_timeline(count=20,since_id=sinceID) 

代碼重新檢查,每隔10分鐘左右,保持最新since_id的軌道,所以只打印出新的推文。

問題:

1)是錯誤twython錯誤或Python的網絡庫錯誤?

2)如果發生此錯誤,在不重新啓動程序的情況下重新建立與Twitter服務器的連接的正確方法是什麼?我是否需要首先銷燬twython對象,然後重新創建它並重新驗證服務器?在twython文檔中,我只能提到在使用流式API時關閉連接。

任何建議非常感謝。

回答

1

1)Twitter調節API請求。 REST API比Streaming API有更多的限制速率限制。以下是每個通話限制的非常詳細的列表: https://developer.twitter.com/en/docs/basics/rate-limiting

2)您不需要重新建立連接。您只需等到您超出限制時間(請參閱上面的鏈接)即可。您可以將請求分隔開,以便不會達到限制,或者您可以將數據本地存儲在緩存中以檢索最後一次有效的響應。

相關問題