Доброго времени суток.
Есть многопоточное приложение, использующее из нескольких потоков peewee. Через некоторое время после запуска вылетает следующее исключение:
peewee.OperationalError: (2006, "MySQL server has gone away (BrokenPipeError(32, 'Broken pipe'))")
В действительности, это, конечно, отваливается PyMySQL, который использует ядро peewee. Исходя из опыта, для работы с PyMySQL помогал threading.Lock:
from threading import Lock
database_locker = Lock()
database_locker.acquire(blocking=True)
pass #работа с БД
database_locker.release()
Вот только в случае peewee это почему-то не работает.
Что думаете? Должен ли помогать threading.Lock, и есть ли другие подходы к решению задачи?
Python 3.4
PyMySQL 0.7.4
peewee 2.8.2