यहाँ एक संबंधित सवाल है, लेकिन मैं समझ नहीं सकता कैसे मशीनीकरण के लिए/urllib2 जवाब लागू करने के लिए: इस सरल कोड how to force python httplib library to use only A requestsफोर्स पायथन मैकेनाइजेशन/urllib2 केवल एक अनुरोध का उपयोग करने के लिए?
असल में, यह देखते हुए:
#!/usr/bin/python
import urllib2
print urllib2.urlopen('http://python.org/').read(100)
यह wireshark निम्नलिखित कह में परिणाम है:
0.000000 10.102.0.79 -> 8.8.8.8 DNS Standard query A python.org
0.000023 10.102.0.79 -> 8.8.8.8 DNS Standard query AAAA python.org
0.005369 8.8.8.8 -> 10.102.0.79 DNS Standard query response A 82.94.164.162
5.004494 10.102.0.79 -> 8.8.8.8 DNS Standard query A python.org
5.010540 8.8.8.8 -> 10.102.0.79 DNS Standard query response A 82.94.164.162
5.010599 10.102.0.79 -> 8.8.8.8 DNS Standard query AAAA python.org
5.015832 8.8.8.8 -> 10.102.0.79 DNS Standard query response AAAA 2001:888:2000:d::a2
एक 5 सेकंड की देरी है यही कारण है कि!
मेरे पास मेरे सिस्टम में कहीं भी आईपीवी 6 सक्षम नहीं है (gentoo USE=-ipv6
के साथ संकलित) इसलिए मुझे नहीं लगता कि पाइथन के पास आईपीवी 6 लुकअप भी करने का कोई कारण है।
उपर्युक्त संदर्भित प्रश्न ने सॉकेट प्रकार को AF_INET
पर स्पष्ट रूप से सेट करने का सुझाव दिया जो बहुत अच्छा लगता है। मुझे नहीं पता कि मैं किसी भी सॉकेट का उपयोग करने के लिए urllib या मशीनीकरण को कैसे मजबूर करता हूं।
संपादित: मुझे पता है कि AAAA प्रश्नों मुद्दे हैं, क्योंकि अन्य एप्लिकेशन के साथ-साथ देरी था और जैसे ही मैंने IPv6 विकलांग के साथ कंपाइल किया, समस्या दूर चला गया ... को छोड़कर के लिए अजगर में जो अभी भी करता है एएएए अनुरोध।
यहां भिन्न, अलग-अलग प्रदाताओं से जुड़े विभिन्न मशीनों पर समान। मैंने libwww-perl का सहारा लिया है और यह GET कमांड है - यह तुरंत सभी मशीनों पर काम करता है। –