我们有一个供内部使用的简单网络服务器,它只有一项职责:监听请求、读取请求并将数据推送到数据库中。数据库和网络服务器都位于同一台机器上。数据库是一个 mysql-db,服务器是一个运行单线程的 python 网络服务器(BaseHTTPServer.HTTPServer
)。
问题是不能同时处理两个请求。问题是,它是否有助于使网络服务器成为多线程(使用 django、cheryypy 等)?直觉上,网络服务器仅执行 CPU 消耗任务,因此将其更改为多线程应该无济于事。这是正确的吗?
最佳答案
当您想一次处理多个请求时,拥有多个线程或进程确实会有所帮助(实际上这在实践中是必需的)。
这并不意味着这两个请求将得到更快的处理。拥有一个进程或线程池对 web 服务器性能非常有帮助,但在这种情况下并不是很明显(除非你有多个内核)。但是 MySQL 可以同时处理两个请求,所以如果您的网络服务器也可以做到这一点,那么您就可以摆脱只处理一个请求的问题。
但是,如果开始使用这样的服务器值得付出努力,只有您可以回答。 :) Django 在任何情况下肯定是矫枉过正,看看一些小型 WSGI 服务器。
关于python - 多线程网络服务器与单线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4458890/