Я разрабатываю систему на основе Python 2.7 Apscheduler и sqlalchemy + sqlite.Система выполняет 2 задания в apscheduler: первое чтение, каждые x секунд, данные с устройства через сокет, а затем сохранение данных в sqlite db (задание Writer);Второе задание - просто прочитать данные из sqlite db и отправить их в службу отдыха (это задание Reader).Каждое задание запускается с параметром интервала 30 секунд, но второе задание задерживается с первого из 15 секунд, тем более что каждое задание запускается только для 1 экземпляра
У меня вопрос о лучшей стратегии доступа к общей базе данных sqlite из2 задания.
Поскольку задания выполняются в разных потоках, следуя руководству по sqlalchemy ( sqlalchemy page ), я создал глобальный сеанс из scoped_session, а затем делю сеанс между читателем.и писатель рабочих мест.Я подумал, что этого достаточно, поскольку задания выполняются последовательно.
Я не уверен, что это лучшая стратегия, во время проверки я обнаружил, что иногда задание Reader регистрирует сообщение типа «Задание не выполнено, другой экземпляр все еще выполняется», что означает, что читатель заблокированДБ доступ.