(2006, ‘MySQL server has gone away’) 和 失去connection的bug
定時任務(wù)太多,且頻繁時,遇到了這個問題
可能是orm打開的數(shù)據(jù)庫連接太多,沒有及時關(guān)閉造成的
解決方法,通過裝飾器,在每個有與數(shù)據(jù)庫操作的函數(shù)前,加上關(guān)閉連接的裝飾器。
from django.db import connections
# ref: django.db.close_old_connections
def close_old_connections():
for conn in connections.all():
conn.close_if_unusable_or_obsolete()
def handle_db_connections(func):
def func_wrapper(*args):
close_old_connections()
result = func(*args)
close_old_connections()
return result
return func_wrapper
@handle_db_connections
def orm_test():
# 數(shù)據(jù)庫orm操作
pass