5

reddit からコメントの http を取得しようとすると、エラーが発生します。これはさまざまな URL で発生しており (すべてが特殊文字を使用しているわけではありません)、これもその 1 つです。1 時間の時間枠で、reddit.com ドメインへの 1000 以上のリクエストがある場合があります。

hdr = {"User-Agent": "My Agent"}
try:
     req = urllib2.Request("http://www.reddit.com/r/gaming/"
           "comments/1bjuee/when_pokΓ©mon_was_good", headers=hdr)
     htmlSource = urllib2.urlopen(req).read()
except Exception as inst:
     print inst

Output>>HTTP Error 504: Gateway Time-out
4

1 に答える 1

4

HTTP エラー 504 ゲートウェイのタイムアウト - サーバー (Web サーバーである必要はありません) は、要求された URL にアクセスするためのクライアント (Web ブラウザーや CheckUpDown ロボットなど) による要求を満たすためのゲートウェイまたはプロキシとして機能しています。このサーバーは、HTTP 要求を処理するためにアクセスしたアップストリーム サーバーからタイムリーな応答を受け取りませんでした。

これは通常、アップストリーム サーバーとゲートウェイ/プロキシがデータ交換のプロトコルに同意していないというよりも、アップストリーム サーバーがダウンしている (ゲートウェイ/プロキシに応答がない) ことを意味します。

問題はネットワーク上のさまざまな場所で発生する可能性があり、それに対する「固有の」解決策はありません。自分で問題を調査する必要があります。

あなたのコードは正常に動作します。問題の可能な解決策は次のとおりです。

import urllib2
hdr = {"User-Agent": "My Agent"}

while True:
    try:
        req = urllib2.Request("http://www.reddit.com/", headers=hdr)
        response = urllib2.urlopen(req)
        htmlSource = response.read()
        if response.getcode() == 200:
            break
    except Exception as inst:
        print inst

このコードは、200 応答 (HTTP 要求が成功した場合の標準応答) を取得するまで Web ページの要求を試みます。ループが壊れている間に 200 応答が発生し、次の要求 (またはプログラムにあるもの) を実行できる場合

于 2013-04-03T19:13:37.450 に答える