2016-10-12 131 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.处理您的请求的中间主机无法完成它。它代表您以自己的名义向另一台服务器提出请求,以处理您的请求,但此请求耗时太长,超时。通常这是因为后端网络拥塞;如果再尝试几次,有时会起作用吗?

无论如何,我都会与您的网络管理员通话。这可能有多种原因,他们应该能够帮助您解决问题。