2010-08-09 7 views
6

में मोंगो डीबी और पायमोंगो से ऑपरेशन विफलता को कैसे पकड़ें मुझे एक समस्या हो रही है जहां पोंगोंगो के माध्यम से मोंगोहक के लिए मेरे मोंगोडब कनेक्शन के बाद थोड़ी देर के लिए निष्क्रिय हो जाता है (कोई प्रश्न नहीं), यह समय-समय पर होगा। यह ठीक है, लेकिन डेटाबेस को कनेक्शन केवल तभी बनाया जाता है जब Django ऐप शुरू हो जाता है। ऐसा लगता है कि यह ठीक से जुड़ा हुआ है, लेकिन इसे फिर से प्रमाणित करने की आवश्यकता है। जब कनेक्शन की मृत्यु हो जाती है और फिर से कनेक्ट हो जाता है, और एक क्वेरी चलाने की कोशिश करती है, तो यह OperationFailure और निम्न अपवाद मान database error: unauthorized for db [shanereustle] lock type: -1 बढ़ाता है जो मुझे बताता है कि यह पुनः कनेक्ट हो रहा है, लेकिन प्रमाणीकरण नहीं कर रहा है। मैंने को pymongo.errors से आयात किया है और निम्न प्रयासों का उपयोग करने का प्रयास कर रहे हैं ... सिवाय इसके कि मुझे त्रुटि पकड़ने और प्रमाणित नहीं लग रहा है।पाइथन

try: 
    db.mongohq.shanereustle.blog.find() 
except OperationFailure: 
    db.authenticate() #this function reauthenticates the existing connection 

लेकिन किसी कारण से यह नहीं पकड़ता है। यदि इस कोड के बजाय, मैं क्वेरी से पहले db.authenticate() चलाता हूं, तो यह ठीक से ठीक हो जाएगा और ठीक हो जाएगा, लेकिन मैं प्रत्येक क्वेरी पर पुनः प्रमाणित नहीं करना चाहता हूं। ऐसा करने के उचित तरीकों पर अन्य सुझावों का बहुत स्वागत है और मैं सहायता की सराहना करता हूं।

धन्यवाद!

उत्तर

6

क्या आप ढूंढने के बजाय find_one() को आजमा सकते हैं()। उत्तरार्द्ध कर्सर पर स्वचालित रूप से पुनरावृत्ति नहीं करता है।

मैं सिर्फ एक --auth डेटाबेस के साथ इस की कोशिश की, और यह काम किया:

try: 
    connection.test.foo.find_one() 
except pymongo.errors.OperationFailure: 
    print "caught" 
+0

बिल्कुल सही! अब, यह एक और बात है जिसे मैंने इसे लागू करने के बाद देखा। कनेक्शन मरने के बाद पहली बार एक प्रश्न चलाया जाता है, यह ऑटोरकनेक्ट उठाता है। उसके बाद प्रत्येक पृष्ठ ऑपरेशन विफलता उठाता है। क्या कोई तरीका है जिसे मैं कोशिश कर सकता हूं, सिवाय इसके कि छोड़कर? मैं पहले AutoReconnect, और फिर ऑपरेशन विफलता की जांच कर सकता था? धन्यवाद! –

+3

अद्यतन: आप कई अपवादों का उपयोग कर सकते हैं, उदाहरण: 'को छोड़कर (ऑटो रिककनेक्ट, ऑपरेशन विफलता): ' –

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

  • कोई संबंधित समस्या नहीं^_^