Какая стратегия для R / W на совместно используемой базе данных под заданиями aspcheduler? - PullRequest
0 голосов
/ 17 сентября 2018

Я разрабатываю систему на основе 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 регистрирует сообщение типа «Задание не выполнено, другой экземпляр все еще выполняется», что означает, что читатель заблокированДБ доступ.

...