我正在尝试找到使用 uWSGI 进行并发数据库访问的最佳解决方案。
一些细节:
我正在使用 python3 (3.3) 和 sqlite3。我希望能够使用更多进程(以及线程)来扩展我的应用程序?我不确定 --threads 对 uWSGI 到底做了什么......)
sqlite3 内置了对并发进程使用的支持,但不一定支持线程。
那么我应该围绕实现锁定的 sqlite3 连接对象编写某种包装器吗?
或者拥有某种可以完成所有数据库工作的工作进程会更好。如果是这种情况,我如何使用 uWSGI 启动这个单独的工作程序,以及如何将消息传递给 Web 工作程序进程?
还是有更好的解决方案?
最后我有一个相关的问题。我应该为每个请求创建一个数据库连接,还是应该为每个在工作人员还活着时保持打开状态的进程建立一个持久连接?
在我看来,在每个请求上创建连接可能会很昂贵,但要确保拥有持久连接不会导致问题。