我正在基于python 2.7的Apscheduler和sqlalchemy + sqlite开发系统。 系统在apscheduler上执行2个作业:第一个作业(每x秒),通过套接字从设备读取数据,然后将数据存储在sqlite db中(Writer作业);第二个作业,只需从sqlite db中读取数据,然后将其发送到rest服务(这是Reader作业)即可。每个作业的间隔参数为30秒,但第二个作业比第一个作业延迟15秒,此外,每个作业仅运行1个实例
我的问题是关于从2个作业访问共享sqlite数据库的更好策略。
由于作业在不同的线程上运行,因此按照sqlalchemy手册(sqlalchemy page),我从scoped_session创建了一个全局Session,然后在Reader和Writer作业之间共享了Session。我认为这是足够的,因为作业是按顺序执行的。
我不确定这是否是更好的策略,在验证过程中,我发现有时Reader作业会记录一条消息,例如“ Job未执行,另一个实例仍在运行”,这表明该读者已被db访问锁定。