我有多线程python3应用程序。要访问数据库,我使用SQLAlchemy 1.0.6(使用MySQL会话)。
数据库具有表WorkerTask
,其中包含具有不同状态的任务。
我的应用程序(工作人员)的线程执行给定的任务并在执行期间更改其状态:“待定”,“正在运行”,“已完成”。
另一个线程(监视器)检查任务的状态并执行某些操作。 此时我有一个错误 - 从数据库监视请求任务状态,但接收旧任务状态。似乎自启动监视器线程并打开其数据库连接后任务状态不会更改。
我检查了MySQL的行响应 - 监视器线程接收过时的数据。 在使用phpmyadmin的同时,我看到了正确的任务状态。 所以我的工作线程会将更改持续存储到数据库中,但监视器会收到过时的数据。
我认为这是一个与其会话相关的MySQL技巧。
如何解决?
更新
失败的原因以及如何解决此问题:SQLAlchemy - entity not marked as expired