我在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集成。
注意:我意识到这是处理会话的一种有点非常规的方式。我不是在寻找一种更好地处理会话的方法 - 我已经知道有更好的方法:)
答案 0 :(得分:1)
在Windows上,只有一个Apache子进程处理请求。在非Windows系统上,如果使用嵌入模式,则可能有多个进程。
使用mod_wsgi守护程序及其默认的单个进程。参见:
http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide#Delegation_To_Daemon_Process
和