nameko 和 peewee 混合使用会影响 TLS 复用数据库连接吗?
会得 peewee 用的是 threading.local 来实现 TLS
class _ConnectionLocal(_ConnectionState, threading.local): pass
nameko 并发模型用的是 eventlet 的 pool。处理每个任务的时候,都会创建一个 greenthread,然后提交到 pool 中去跑。
eventlet 的 pool 和 python 的 thread pool 不一样。
python 的 thread pool 是解决 thread 频繁创建和销毁占用资源的问题。所以 python 的 thread pool 是复用线程的。
但是协程的创建和销毁是非常廉价的,所以,没有复用 greenthread 的需求。eventlet 的 pool 不会复用 greenthread。
eventlet 的用法是:创建一个 greenthread,然后提交到 pool 中,跑完了 greenthread 也就被销毁了!那这个 pool 还有什么用呢?我觉得:可以借助 pool 的 size 方便的控制并发数!版权声明
本文仅代表作者观点,不代表博信信息网立场。
上一篇:pytest使用ABC 下一篇:【物理应用】油气井井底计算附Matlab代码