0

我在 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 集成。

注意:我意识到这是一种处理会话的非正统方式。我不是在寻找更好地处理会话的方法 - 我已经知道有更好的方法:)

4

1 回答 1

1

在 Windows 上,只有一个 Apache 子进程处理请求。在非 Windows 系统上,如果使用嵌入式模式,则可以有多个进程。

使用 mod_wsgi 守护进程及其默认的单个进程。看:

http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide#Delegation_To_Daemon_Process

和:

http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

于 2012-06-17T23:18:18.950 回答