2011-10-25 56 views
2

HTTP请求在我的本地工作正常,但使用Python请求库在我的服务器会返回“过多的重定向”运行相同的HTTP请求重定向错误错误太多使用Python要求

当我进入

localhost/terminal/jfk 

在浏览器中,我得到一个预期的json字典。

然而,当我运行使用我的服务器

requests.get('http://splitmyri.de/terminal/jfk') 

蟒请求库在Python下面我收到来自请求模块“过多的重定向”错误。

有什么想法导致错误?还是缩小潜在原因的建议?

+0

请你告诉我们你的想法JSON你应该从GoDaddy.com空的域名页面获得? –

+0

它应该返回航空公司及其抵达终端的JSON(以及其他一些数据)。 – Asha

+0

我明白现在发生了什么......看到我下面的回复...干杯 –

回答

1

如果您需要缩小问题范围,最好的办法是使用wireshark并分析不同的连接及其内容。像这样,你会看到通过电线传输的东西。适用于调试TCP相关问题。此外,您可以使用Python模块pdb并调试您的程序。在调用之前发出pdb.set_trace(),然后单步进入函数并查看它的功能。有关pdb的更多信息,请参阅Python文档或按?

+2

我有我的怀疑,这是一个真正的问题,我认为这是内容垃圾邮件 –

+0

好点。让我们看看会发生什么:) – hochl

+1

不是垃圾邮件!只是显示我的新手颜色,我猜! – Asha

6

阿莎,

后您回应说,这真的是你的网站,我检查了,为什么我得到一个空GoDaddy.com页。问题是,对于splitmyri.de您的DNS条目返回两个不同的A记录...

分析结果,采用107.10.141.119
硬在我/etc/hosts文件编码107.10.141.119 splitmyri.de让我作出查询,以107.10 .141.119,返回“这是我的网站”index.html(然后我检查了http://splitmyri.de/terminal/并得到了一个空的json散列,其中MIME类型= [application/json])。检查此地址的反向条目将返回Amazon AWS主机(我对真实网页的期望类型)。现在,你的代码上面按预期工作......使用68.178.232.100

[[email protected] ~]$ python 
Python 2.5.2 (r252:60911, Jan 24 2010, 14:53:14) 
[GCC 4.3.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import requests 
>>> requests.get('http://splitmyri.de/terminal/') 
<Response [200]> 
>>> requests.get('http://splitmyri.de/terminal/').content 
u'{}' 
>>> # requests.get('http://splitmyri.de/terminal/jfk').content returns a huge json hash 

分析结果:
与查询68.178.232.100执行同样的系统训练得到一个空GoDaddy.com页。反向映射这个地址成为一个典型的停放域名条目。发送这里请求返回TooManyRedirects正如你在尝试看到...

[[email protected] ~]$ python 
Python 2.5.2 (r252:60911, Jan 24 2010, 14:53:14) 
[GCC 4.3.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import requests 
>>> foo = requests.get('http://splitmyri.de/terminal/jfk') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "build/bdist.linux-i686/egg/requests/api.py", line 50, in get 
    File "build/bdist.linux-i686/egg/requests/api.py", line 37, in request 
    File "build/bdist.linux-i686/egg/requests/sessions.py", line 170, in request 
    File "build/bdist.linux-i686/egg/requests/models.py", line 383, in send 
    File "build/bdist.linux-i686/egg/requests/models.py", line 210, in _build_response 
requests.exceptions.TooManyRedirects 
>>> 

SOLUTION
修复您的DNS为splitmyri.de(除去A记录68.178.232.100),一切都会好。

包括下面的DNS信息作为一个供参考......

[[email protected] ~]$ dig splitmyri.de 

; <<>> DiG 9.6-ESV-R4 <<>> splitmyri.de 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54051 
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 4 

;; QUESTION SECTION: 
;splitmyri.de.     IN  A 

;; ANSWER SECTION: 
splitmyri.de.   3193 IN  A  68.178.232.100 
splitmyri.de.   3193 IN  A  107.20.141.119 

;; AUTHORITY SECTION: 
splitmyri.de.   3193 IN  NS  ns49.domaincontrol.com. 
splitmyri.de.   3193 IN  NS  ns50.domaincontrol.com. 

;; ADDITIONAL SECTION: 
ns49.domaincontrol.com. 3193 IN  A  216.69.185.25 
ns49.domaincontrol.com. 3193 IN  AAAA 2607:f208:206::19 
ns50.domaincontrol.com. 3193 IN  A  208.109.255.25 
ns50.domaincontrol.com. 3193 IN  AAAA 2607:f208:302::19 

;; Query time: 1 msec 
;; SERVER: 127.0.0.1#53(127.0.0.1) 
;; WHEN: Wed Oct 26 05:14:51 2011 
;; MSG SIZE rcvd: 205 

[[email protected] ~]$ 
[[email protected] ~]$ dig -x 107.20.141.119 

; <<>> DiG 9.6-ESV-R4 <<>> -x 107.20.141.119 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41049 
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 6 

;; QUESTION SECTION: 
;119.141.20.107.in-addr.arpa. IN  PTR 

;; ANSWER SECTION: 
119.141.20.107.in-addr.arpa. 300 IN  PTR  ec2-107-20-141-119.compute-1.amazonaws.com. 

;; AUTHORITY SECTION: 
141.20.107.in-addr.arpa. 900 IN  NS  pdns1.ultradns.net. 
141.20.107.in-addr.arpa. 900 IN  NS  pdns2.ultradns.net. 
141.20.107.in-addr.arpa. 900 IN  NS  pdns3.ultradns.org. 
141.20.107.in-addr.arpa. 900 IN  NS  pdns5.ultradns.info. 
141.20.107.in-addr.arpa. 900 IN  NS  pdns4.ultradns.org. 
141.20.107.in-addr.arpa. 900 IN  NS  pdns6.ultradns.co.uk. 

;; ADDITIONAL SECTION: 
pdns1.ultradns.net.  86400 IN  A  204.74.108.1 
pdns1.ultradns.net.  86400 IN  AAAA 2001:502:f3ff::1 
pdns2.ultradns.net.  86400 IN  A  204.74.109.1 
pdns3.ultradns.org.  86400 IN  A  199.7.68.1 
pdns4.ultradns.org.  86400 IN  A  199.7.69.1 
pdns4.ultradns.org.  86400 IN  AAAA 2001:502:4612::1 

;; Query time: 306 msec 
;; SERVER: 127.0.0.1#53(127.0.0.1) 
;; WHEN: Wed Oct 26 05:09:47 2011 
;; MSG SIZE rcvd: 392 

[[email protected] ~]$ dig -x 68.178.232.100 

; <<>> DiG 9.6-ESV-R4 <<>> -x 68.178.232.100 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38578 
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 

;; QUESTION SECTION: 
;100.232.178.68.in-addr.arpa. IN  PTR 

;; ANSWER SECTION: 
100.232.178.68.in-addr.arpa. 3600 IN PTR  parkwebwin-v01.prod.mesa1.secureserver.net. 

;; AUTHORITY SECTION: 
232.178.68.in-addr.arpa. 3600 IN  NS  cns1.secureserver.net. 
232.178.68.in-addr.arpa. 3600 IN  NS  cns2.secureserver.net. 

;; ADDITIONAL SECTION: 
cns1.secureserver.net. 3600 IN  A  208.109.255.100 
cns2.secureserver.net. 3600 IN  A  216.69.185.100 

;; Query time: 173 msec 
;; SERVER: 127.0.0.1#53(127.0.0.1) 
;; WHEN: Wed Oct 26 05:12:06 2011 
;; MSG SIZE rcvd: 171 

[[email protected] ~]$ 
+1

+1好抓住! – hochl

+0

谢谢迈克!我实际上能够删除'TooManyRedirects'错误后,我修复了一些(看似)在我的python代码中无关的正则表达式错误,这意味着它似乎能够在不删除A记录68.178.232.100的情况下工作。但是,确实需要清理它...(这是旧的AWS EC2实例的IP)。侦探工作! – Asha

+0

问题是A记录; DNS round-robins响应,并且有一个小时超时。您没有再看到问题,因为您对splitmyri.de的DNS查询有不同的响应。 –