Python HTTP错误504:尝试读取reddit评论文章时网关超时

Python HTTP错误504:尝试读取reddit评论文章时网关超时,python,web-scraping,urllib2,reddit,http-status-code-504,Python,Web Scraping,Urllib2,Reddit,Http Status Code 504,我在尝试从reddit获取评论的http时遇到错误。这在各种URL上都发生过(不是所有URL都有特殊字符),这就是其中之一。在一小时的时间范围内,可能会有1000个或更多的请求发送到reddit.com域 hdr = {"User-Agent": "My Agent"} try: req = urllib2.Request("http://www.reddit.com/r/gaming/" "comments/1bjuee/when_pokΓ©mon_was_go

我在尝试从reddit获取评论的http时遇到错误。这在各种URL上都发生过(不是所有URL都有特殊字符),这就是其中之一。在一小时的时间范围内,可能会有1000个或更多的请求发送到reddit.com域

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
-服务器(不一定是Web服务器)充当网关或代理,以满足客户端(例如您的Web浏览器或我们的CheckUpDown robot)访问请求URL的请求。此服务器没有从其访问以处理您的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请求的标准响应)。当200响应发生时,循环将中断,您可以执行下一个请求(或您程序中的任何请求)

是什么让您认为这是代码而不是网络错误?真正的问题是什么?您是否需要解释它为什么不起作用,或者它的解决方案/变通方法?首先,我想知道它为什么不起作用。给出代码是为了复制问题。更改DNS服务器有助于缓解此问题吗?我尝试将Google dns 8.8.8.8添加到我的/etc/resolve.conf,但我仍然看到它们。这是一个著名的网站。