【发布时间】:2012-06-17 07:40:29
【问题描述】:
我在 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 集成。
注意:我意识到这是一种处理会话的非正统方式。我不是在寻找更好地处理会话的方法 - 我已经知道有更好的方法:)
【问题讨论】:
标签: python django multithreading apache2 threadpool