我正在开发一个应用程序,它将通过HTTP从几个地方收集数据,在本地缓存数据,然后通过HTTP提供服务.
所以我看着以下内容.我的应用程序将首先创建多个线程,这些线程将以指定的时间间隔收集数据,并将该数据本地缓存到SQLite数据库中.
然后在主线程中启动一个CherryPy应用程序,它将查询该SQLite数据库并提供数据.
我的问题是:如何从我的线程和CherryPy应用程序处理与SQLite数据库的连接?
如果我每个线程连接到数据库,我还能够创建/使用内存数据库吗?
简短回答:不要在线程应用程序中使用Sqlite3.
Sqlite3数据库在大小方面可以很好地扩展,但对于并发而言非常可靠.您将受到"数据库已锁定"错误的困扰.
如果这样做,您将需要每个线程连接,并且您必须确保这些连接自行清理.传统上这是使用线程本地会话来处理的,并且使用SQLAlchemy的ScopedSession执行得相当好(例如).如果我是你,我会使用它,即使你没有使用SQLAlchemy ORM功能.