0
哪個是從Python中的服務器請求常量數據的最佳方式?我已經嘗試過使用Urllib3,但由於某種原因,python腳本停了一會兒。我也在嘗試urllib2(參見下面的代碼),但是我注意到有時會有很大的延遲(urllib3沒有經常發生這種情況),響應不是每0.5秒(有時候每6秒)。我能做些什麼來解決這個問題?不斷請求http數據的最佳方法?
import socket
import urllib2
import time
# timeout in seconds
timeout = 10
socket.setdefaulttimeout(timeout)
while True:
try:
# this call to urllib2.urlopen now uses the default timeout
# we have set in the socket module
req = urllib2.Request('https://www.okcoin.com/api/v1/future_ticker.do?symbol=btc_usd&contract_type=this_week')
response = urllib2.urlopen(req)
r = response.read()
req2 = urllib2.Request('http://market.bitvc.com/futures/ticker_btc_week.js')
response2 = urllib2.urlopen(req2)
r2 = response2.read()
except:
continue
print r + str(time.time())
print r2 + str(time.time())
time.sleep(0.5)
使互聯網走得更快? (如果請求太多,您可能會遇到請求的API請求速率限制,失敗時間爲6秒) – 2015-02-09 20:38:23
「請求常量數據」?如果您想要連續傳輸流,則需要連接到使用適當擴展的流式傳輸協議的服務(SSE,服務器發送的事件,這是常用的方法 - 請參閱http://en.wikipedia.org/wiki/。 Server-sent_events),而不是給你一個單一的HTTP文檔 - 也就是說,這樣做的權利意味着要編寫* server *來明確支持它;這不是純粹在客戶端做的事情。還有許多其他的長輪詢方法可用,但它們都需要服務器支持。 – 2015-02-09 20:52:38
...您可能還會看到一種您希望持續更新其他幾個名稱下所述更新的提要;見ie。在http://en.wikipedia.org/wiki/Comet_(programming) – 2015-02-09 20:57:35