HTTP响应码每次都不一样 i 运行 script\python 2.7

HTTP response code different every time i run the script\python 2.7

我编写了简单的脚本来检查 url 是否受错误 404 影响。

当我 运行 url 上的脚本使用 404 时,它确实 returns 我的正确响应但是有时 returns 一个不同的 (503),我不我不明白为什么会这样,我已经在许多其他 URL 上进行了测试,但结果从来都不一致。有人能解释一下为什么我的结果一直在变化,即使实际的 url 状态没有变化吗??

在此先感谢您的帮助

我试过使用以下模块:

urllib,urllib2, 请求

所有这些都产生了相同的不一致结果。

脚本如下:

import requests

for url in ['https://www.amazon.es/gp/product/B00QTVL0T4']:
    response = requests.get(url)
    response.status_code
    print(response)

响应 [404] 和响应 [503](不正确)

import urllib

result=''

#***** paste url into square bracket ****#

for url in ["https://www.amazon.es/gp/product/B003ODEJZ2",'https://www.amazon.fr/gp/product/B01H801C9C']:
    a=urllib.urlopen(url)
    e=a.getcode()
    if e==404:
        result+=(url+" Error_404 "+"\n")
    else:
        result+=(url+" Link_OK "+"\n")
print result

import urllib2
for url in ['https://www.amazon.es/gp/product/B003ODEJZ2','https://www.amazon.fr/gp/product/B01H801C9C','https://www.amazon.de/dp/B00B8PRE1Y']:
    try:
        connection = urllib2.urlopen(url)
    except urllib2.HTTPError, e:
         if e.getcode()==404:
             print (url+" Error_404")
         else:
             print(url+" Link_Ok")

503 的原因通常是 "Service Unavailable",这意味着处理您的请求的任何东西都找不到支持服务来提供响应。这可能 return 由物理或软件提供的负载平衡器(F5s、HAProxy 等)、CDN(Fastly、Cloudflare 等)或类似 Apache 或 Nginx 的 运行但没有适当的应用程序可以联系(无论出于何种原因)。

由于您示例中的 URL 是 Amazon URL,CDN 很可能 returning 503。CDN(如 Fastly)使用 Varnish,而 Varnish 将 return 以下的 503案例:

  • 后端服务器return发送了一个 503,因此 Varnish 将其转发
  • 后端服务器return发送了一个不可解析的响应

有时 CDN 可能 return 503:

  • CDN从源头读取超时
  • CDN连接源站超时
  • CDN无法read/write到源
  • 源站拒绝来自CDN的连接
  • CDN找不到源站路由
  • 来源错误配置了 TLS

(还有很多其他问题)

所以说真的,我们不太可能告诉您为什么会收到 503。您需要更多地反省响应并查找相关文档。