我在 Apache2 下运行一个 python 线程池来处理传入的特殊 HTTP 请求。
这个想法是每个请求源都有一个“处理程序”线程 - 所以如果我有三个设备(A、B、C)向我发送这些特殊请求,每个设备都会在服务器上有自己的“处理程序”线程(1- A、2-B、3-C)
我有一个这样定义的线程池类:
class threadController(threading.Thread)
threadPool = []
当我收到一个新请求时,我会查看所有正在运行的线程,以匹配一个特定的线程,并将请求传递给它。
这似乎在 Windows 下运行良好。
但是,在 Linux 上,有时我的 threadPool 变量似乎返回为空,并且我得到了一个额外的线程。所以我有一个设备(A)发送请求,但最终有两个线程(1-A 和 2-A)。
奇怪的是:它总是一个额外的线程,永远不会更多。无论我的设备 (A) 发送 5 个请求还是 30 个请求。
我正在使用 mod_wsgi (3.3) 进行 django 集成。
注意:我意识到这是一种处理会话的非正统方式。我不是在寻找更好地处理会话的方法 - 我已经知道有更好的方法:)