2016-10-12 122 views
0

這是一個測試腳本,用於請求由API本身提供的Rovi API的數據。請求 - 網關超時

test.py

import requests 
import time 
import hashlib 
import urllib 

class AllMusicGuide(object): 
    api_url = 'http://api.rovicorp.com/data/v1.1/descriptor/musicmoods' 

    key = 'my key' 
    secret = 'secret' 

    def _sig(self): 
     timestamp = int(time.time()) 

     m = hashlib.md5() 
     m.update(self.key) 
     m.update(self.secret) 
     m.update(str(timestamp)) 

     return m.hexdigest() 

    def get(self, resource, params=None): 
     """Take a dict of params, and return what we get from the api""" 

     if not params: 
      params = {} 

     params = urllib.urlencode(params) 

     sig = self._sig() 

     url = "%s/%s?apikey=%s&sig=%s&%s" % (self.api_url, resource, self.key, sig, params) 

     resp = requests.get(url) 

     if resp.status_code != 200:   
      # THROW APPROPRIATE ERROR 
       print ('unknown err') 

     return resp.content 

從另一個script我導入module

from roviclient.test import AllMusicGuide 

,並創建一個mood functionclass的一個實例:

def mood(): 
    test = AllMusicGuide() 
    print (test.get('[moodids=moodids]')) 

根據documentation,以下是請求syntax

descriptor/musicmoods?apikey=apikey&sig=sig [&moodids=moodids] [&format=format] [&country=country] [&language=language] 

但運行該腳本,我得到以下錯誤:

unknown err <h1>Gateway Timeout</h1>:

有什麼不好?

回答

0

「504,再試一次,502通過了。」

你的代碼很好,這是一個網絡問題。 「網關超時」是504.處理您的請求的中間主機無法完成它。它代表您以自己的名義向另一臺服務器提出請求,以處理您的請求,但此請求耗時太長,超時。通常這是因爲後端網絡擁塞;如果再嘗試幾次,有時會起作用嗎?

無論如何,我都會與您的網絡管理員通話。這可能有多種原因,他們應該能夠幫助您解決問題。