मेरे पास आपके जैसा ही मुद्दा था। मैंने वॉचडॉग लाइब्रेरी का उपयोग करके एक निगरानी स्क्रिप्ट लागू की, और, "wait_timeout" के अंत तक, MySQL त्रुटि उठाई जाएगी।
"django.db.close_old_connections ()" फ़ंक्शन के साथ कुछ प्रयासों के बाद, यह अभी भी काम नहीं कर रहा था, लेकिन मैं हर परिभाषित समय अंतराल में पुराने कनेक्शन बंद करने का प्रयास कर रहा था, जो काम नहीं कर रहा था। मैंने अपने कस्टम मैनेजमेंट कमांड के कॉल से पहले ही क्लोज कमांड को चलाने के लिए बदल दिया (जो कि कमांड है जो डीबी के साथ इंटरैक्ट करेगा और MySQL एरर के साथ क्रैश होता था) और यह काम करना शुरू कर दिया।
स्पष्ट रूप से इस पेज से , ऐसा होने का कारण यह है कि "close_old_connection" फ़ंक्शन केवल HTTP अनुरोध संकेतों से जुड़ा हुआ है, इसलिए इसे विशिष्ट कस्टम स्क्रिप्ट में सक्रिय नहीं किया जाएगा। Django का दस्तावेज़ीकरण यह नहीं बताता है, और मैं ईमानदारी से चीजों को भी उसी तरह समझता हूं जैसे आप समझ रहे थे।
तो, आप डीबी के साथ बातचीत करने से पहले पुराने कनेक्शन को बंद करने के लिए कॉल को जोड़ने का प्रयास कर सकते हैं:
from django.db import close_old_connections
close_old_connections()
do_something_with_db()