这个问题不用太担心, 一,一般 WebServer 和 DB 都是局域网直连,网络性能损失很小,在要求不是极高的情况下,能够满足需求。 二,因为 RDBMS 的特殊性,目前一个连接并不能同时执行多个请求。所以如果使用非阻塞IO,不仅会导致前端非常复杂,并且依然会卡在一个执行时间超长的 SQL 上,除非针对每次请求创建一个 DB 连接,这样一定程度上增加了 latency 和 DB 的负荷。 三,如果用多核 CPU (现在几乎全部都是)的服务器,可以同时创建多个 Web Server 的进程,能够缓解DB阻塞的问题。 四,不建议自己实现 DB Driver ,除非你知道你在做什么。 五,自己实现协议和DB的,都是走火入魔的标志。
一,如果实在想解决这个问题,中间加一层 API ,负责处理 Web Server 和 DB 的连接。 二,连接池确实能解决一定问题。 三,这跟是否自带调度器无关,而是因为 Python 有 GIL 。我现在在 C 部分的代码,即使多线程也是每个线程使用一个 event loop 。跟进程模型几乎一样的,只是节省了共享内存的部分。 四,如果你写过类似的,就会知道,像这样的产品,从开始到可用,最少需要一年的时间。 五,同上。 六,优秀的工程师必备条件之一就是不要高估自己的能力。