我编写了简单的脚本来检查受错误404影响的网址。
当我在404上使用url运行脚本时,它确实会返回正确的响应,但有时会返回另一个(503),我不明白为什么会发生这种情况,我已经在许多其他URL上测试过了结果永远不会一致。有人会这样,并解释为什么我的结果不断改变,即使实际的网址状态不是吗?
提前感谢您的帮助
我尝试使用以下模块:
urllib,urllib2,requets
所有这些都产生了相同的不一致结果。
以下是脚本:
我
import requests
for url in ['https://www.amazon.es/gp/product/B00QTVL0T4']:
response = requests.get(url)
response.status_code
print(response)
回复[404]和回复[503](不正确)
II
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
III
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")
答案 0 :(得分:1)
503' s原因通常是"服务不可用"这意味着无论处理您的请求是什么都无法找到提供响应的支持服务。这可能由物理或软件提供的负载均衡器(F5s,HAProxy等),CDN(Fastly,Cloudflare等),或正在运行但没有适当的联系应用程序的Apache或Nginx等返回(无论出于何种原因)。
由于您的示例中的网址是亚马逊网址,因此CDN可能会返回503. CDN(如Fastly)使用Varnish和Varnish将在以下情况下返回503:
有时候CDN可能会返回503:
(以及其他许多其他问题)
实际上,我们不太可能告诉你为什么你会得到一个503.你需要更多地反省一下这个反应并查看相关的文档。