2010-12-15 8 views
12

मेरे पास एक स्टैंड-अलोन स्क्रिप्ट है जो Django ORM का उपयोग करके पोस्टग्रे से/लिखती है।Django डेटाबेस एरर के बाद पुनः कनेक्ट कैसे करें: क्वेरी टाइमआउट

मैं इस त्रुटि मिलती है कभी कभी

DatabaseError: query timeout server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request.

मैं संपर्क पुनः स्थापित और पटकथा में प्रसंस्करण कोड पुन: प्रयास करने की जरूरत है, लेकिन एक रास्ता खोज नहीं कर पा रहे। निम्नलिखित कोड 'InterfaceError: कनेक्शन पहले से बंद है' को फिर से उठाता है, इसलिए यह काम नहीं करता है।

for repeat in range(5): 
    try: 
     .....................PROCESSING CODE................... 
    except DatabaseError, e: 
     time.sleep(30) 
    else: 
     break 
else: 
    return 

कोई विचार?

उत्तर

25

मैं डेटाबेस कनेक्शन पुनः बनाने के लिए एक समान की जरूरत है और मैं Django 1.3 में कनेक्शन रीसेट करने के लिए निम्न काला जादू कोशिश कर रहा हूँ:

from django.db import connection 
connection.connection.close() 
connection.connection = None 

मैं इस बाहर की कोशिश करने के PostgreSQL आसान नहीं है, लेकिन ऐसा लगता है कि कम से कम MySQL और sqlite के लिए काम करना प्रतीत होता है। साथ ही, यदि आप बहु-डीबी का उपयोग कर रहे हैं, तो आपको django.db.connections शब्दकोश से अपने विशिष्ट कनेक्शन पर यह चरण निष्पादित करना होगा।

+1

मुझे अब समस्या से परेशान नहीं है। अगर किसी और ने इस उत्तर को सही समाधान के रूप में सत्यापित किया है, तो मैं इसे चिह्नित करूंगा। जवाब देने के लिए शुक्रिया। – kakarukeys

+0

इसे जाने दें। अगर यह काम करता है तो मैं आपको बता दूंगा ... –

+0

@kakarukeys यह मेरे लिए काम करता है। (Django 1.4 और postgresql का उपयोग कर) –

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