Steam市场上的“重试”计时器是什么?

时间:2019-05-08 04:05:00

标签: python api steam

我正在研究一个Python脚本,该脚本从Steam市场中获取商品价格。

我的问题是,如果我让它运行太长时间,它将收到HTTP 429错误。

我想避免这种情况,但是在服务器的响应中找不到标头retry-after

这是响应头的示例

('Server', 'nginx')
('Content-Type', 'application/json; charset=utf-8')
('X-Frame-Options', 'DENY')
('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT')
('Cache-Control', 'no-cache')
('Vary', 'Accept-Encoding')
('Date', 'Wed, 08 May 2019 03:58:30 GMT')
('Content-Length', '6428')
('Connection', 'close')
('Set-Cookie', 'sessionid=14360f3a5309bb1531932884; path=/; secure')
('Set-Cookie', 'steamCountry=CA%7C2020e87b713c54ddc925e4c38b0bf705; path=/; secure')

编辑:这是代码和示例输出。 请注意,在此示例中,try语句内部将不会运行任何内容

def getPrice(card, game):
    url = 'https://steamcommunity.com/market/search/render/?query='
    url = url+card+" "+game
    url = url.replace(" ", "+")
    print(url)
    try:
        data = urllib.request.urlopen(url)
        h = data.getheaders()
        for item in h:
            print(item)
        #print(data.getheaders())
        #k = data.headers.keys()
        json_data = json.loads(data.read())
        pprint.pprint(json_data)
    except Exception as e:
        print(e.headers)
    return 0

在3个不同的调用上输出示例:

https://steamcommunity.com/market/search/render/?query=Glub+Crawl
Server: nginx
Content-Type: application/json; charset=utf-8
X-Frame-Options: DENY
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-cache
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 24
Date: Wed, 08 May 2019 04:24:49 GMT
Connection: close
Set-Cookie: sessionid=5d1ea46f5095d9c28e141dd5; path=/; secure
Set-Cookie: steamCountry=CA%7C2020e87b713c54ddc925e4c38b0bf705; path=/; secure


https://steamcommunity.com/market/search/render/?query=Qaahl+Crawl
Server: nginx
Content-Type: application/json; charset=utf-8
X-Frame-Options: DENY
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-cache
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 24
Date: Wed, 08 May 2019 04:24:49 GMT
Connection: close
Set-Cookie: sessionid=64e7956224b18e6d89cc45c0; path=/; secure
Set-Cookie: steamCountry=CA%7C2020e87b713c54ddc925e4c38b0bf705; path=/; secure


https://steamcommunity.com/market/search/render/?query=Odshan+Crawl
Server: nginx
Content-Type: application/json; charset=utf-8
X-Frame-Options: DENY
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-cache
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 24
Date: Wed, 08 May 2019 04:24:50 GMT
Connection: close
Set-Cookie: sessionid=a7acd1023b4544809914dc6e; path=/; secure
Set-Cookie: steamCountry=CA%7C2020e87b713c54ddc925e4c38b0bf705; path=/; secure

1 个答案:

答案 0 :(得分:0)

尝试一下。

def getPrice(card, game):
    url = 'https://steamcommunity.com/market/search/render/?query='
    url = url+card+" "+game
    url = url.replace(" ", "+")
    print(url)
    while True:
        try:
            data = urllib.request.urlopen(url)
            h = data.getheaders()
            for item in h:
                print(item)
            json_data = json.loads(data.read())
            pprint.pprint(json_data)
        except Exception as e:
            import time
            milliseconds = 10000
            time.sleep(milliseconds)

使用毫秒值。