Saya memiliki masalah yang persis sama dengan Anda. Saya menerapkan skrip pemantauan menggunakan perpustakaan pengawas, dan, pada akhir "wait_timeout", kesalahan MySQL akan muncul.
Setelah beberapa kali mencoba dengan fungsi "Django.db.close_old_connections()", itu masih tidak berhasil, tetapi saya mencoba untuk menutup koneksi lama setiap interval waktu yang ditentukan, yang tidak berfungsi. Saya mengubah perintah tutup untuk dijalankan hanya sebelum pemanggilan perintah manajemen kustom saya (yang merupakan perintah yang akan berinteraksi dengan db dan digunakan untuk mogok dengan kesalahan MySQL) dan itu mulai berfungsi.
Rupanya dari halaman ini , alasan mengapa hal itu terjadi adalah karena fungsi "close_old_connection" hanya ditautkan ke sinyal permintaan HTTP, sehingga tidak akan diaktifkan dalam skrip khusus tertentu. Dokumentasi Django tidak mengatakan itu, dan sejujurnya saya juga memahami hal-hal dengan cara yang sama seperti yang Anda pahami.
Jadi, yang bisa Anda coba lakukan adalah menambahkan panggilan untuk menutup koneksi lama sebelum berinteraksi dengan db:
from django.db import close_old_connections
close_old_connections()
do_something_with_db()