请求 - 网关超时

时间:2016-10-12 22:37:10

标签: python api python-requests

这是一个测试脚本,用于请求Rovi API本身提供的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

并在class内创建mood function的实例:

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>:

出了什么问题?

1 个答案:

答案 0 :(得分:0)

&#34; 504,再试一次。 502,它经历了。&#34;

您的代码很好,这是一个网络问题。 &#34;网关超时&#34;是504.处理您请求的中间主机无法完成它。它代表您向另一台服务器发出了自己的请求以便处理您的请求,但是这个请求花了太长时间并超时。通常这是因为后端的网络拥塞;如果你再试几次,它有时会起作用吗?

无论如何,我会和您的网络管理员联系。可能有多种原因,他们应该能够帮助你解决这个问题。