2011-07-20 21 views
5

मेरे पास यह साइट बहुत ऊपर है या नहीं, यह जांचने के लिए मेरे पास यह बहुत ही सरल कोड है।पायथन हॉस्पिटलप्लिब 2 हैंडलिंग अपवाद

import httplib2 
h = httplib2.Http() 
response, content = h.request("http://www.folksdhhkjd.com") 
if response.status == 200: 
    print "Site is Up" 
else: 
    print "Site is down" 

जब मैं एक मान्य URL तो दर्ज कर इसे ठीक प्रिंट साइट ऊपर है 200 है, क्योंकि स्थिति की उम्मीद के रूप में। लेकिन, जब मैं एक अवैध यूआरएल दर्ज करता हूं, तो क्या यह मुद्रित नहीं होना चाहिए साइट नीचे है? इसके बजाय यह प्रिंट इस

Traceback (most recent call last): 
    File "C:\Documents and Settings\kripya\Desktop\1.py", line 3, in <module> 
    response, content = h.request("http://www.folksdhhkjd.com") 
    File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1436, in request 
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) 
    File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1188, in _request 
    (response, content) = self._conn_request(conn, request_uri, method, body, headers) 
    File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1129, in _conn_request 
    raise ServerNotFoundError("Unable to find the server at %s" % conn.host) 
ServerNotFoundError: Unable to find the server at www.folksdhhkjd.com 

की तरह एक अपवाद कुछ मैं इस अपवाद संदेश को ओवरराइड और प्रिंट अपने कस्टम परिभाषित कर सकते हैं "साइट नीचे है"? कोई मार्गदर्शन, कृपया?

संपादित

इसके अलावा एक और प्रश्न ...

h = httplib2.Http('.cache') 

और

h = httplib2.Http() 

उत्तर

6
try: 
    response, content = h.request("http://www.folksdhhkjd.com") 
    if response.status==200: 
     print "Site is Up" 
except httplib2.ServerNotFoundError: 
    print "Site is Down" 

मुद्दे का उपयोग कर अपने कोड के साथ के बीच अंतर यह है कि अगर है क्या है होस्ट जवाब नहीं देता है, अनुरोध किसी भी स्थिति सह वापस नहीं करता है डी, और इसलिए पुस्तकालय एक त्रुटि फेंकता है (मुझे लगता है कि यह पुस्तकालय की एक विशिष्टता है, अनुरोध करने से पहले कुछ प्रकार के DNS रिज़ॉल्यूशन कर रहा है)।

+0

वाह मूल अपवाद हैंडलिंग वह है जो मुझे अब सीखना चाहिए ... बहुत बहुत धन्यवाद! –

4
h = httplib2.Http('.cache') 

सामान यह एक निर्देशिका .cache बुलाया में पुन: प्राप्त करता, इसलिए यदि आप एक ही अनुरोध कर दो बार यह वास्तव में दो बार सब कुछ पाने के लिए नहीं हो सकता कैश; एक बिंदु से शुरू होने वाली फ़ाइल POSIX फाइल सिस्टम (जैसे लिनक्स पर) में छिपी हुई है।

h = httplib2.Http() 

इसके परिणामों को कैश नहीं करता है, इसलिए आपको हर बार अनुरोध किया जाना चाहिए।

+0

ओह, तो ... सर्वोत्तम अभ्यास की तरह लगता है 'h = httplib2.Http ('। Cache ')' का उपयोग करना है। आपका बहुत बहुत धन्यवाद! –

+0

मैंने दोनों उत्तरों को वैसे भी वोट दिया। धन्यवाद! –

+0

मैं इस 'sf = खुला तरह एक फ़ाइल का उपयोग यूआरएल लूप करने के लिए कोशिश कर रहा हूँ ('सी:/दस्तावेज़ और सेटिंग्स/उपयोगकर्ता/डेस्कटॉप/1.txt', 'आर') एस एफ में लाइन के लिए : सक्रिय = 0 प्रिंट "वर्तमान URL है: \ टी" + लाइन कोशिश: प्रतिक्रिया, सामग्री = h.request (लाइन) अगर response.status == 200: सक्रिय = 1 httplib2.ServerNotFoundError को छोड़कर: प्रिंट "साइट डाउन डाउन" sf.close() ' फ़ाइल में मौजूद URL में से एक http://www.fastbookmarking.info है। साइट ऊपर है। मैंने स्टेटस कोड और उसके 200 –

संबंधित मुद्दे