我正在使用mod_wsgi编写WSGI应用程序。我想拥有许多并发连接的能力。 mod_wsgi为每个请求旋转一个新进程,因此无法使用threading.Condition()来通知从一个线程到另一个线程的更改。
我知道有几种不同的方法可以在不同的运行进程(RPC,AMQP,d-bus,Jabber)之间提供实时消息传递,但我正在寻找的是与单行线程接近的东西.wait()和threading.notifyAll()。
当我没有使用mod_wsgi,只运行多个线程时,这里基本上就是我为我工作的东西。显然这两个函数是由不同的线程运行的:
def put_value:
# user has given a new value
# update in DB, then notify any waiting threads
my_condition.acquire()
my_condition.notifyAll()
my_condition.release()
def get_value:
# user has requested to receive a new value as of this point
# we will return a value as soon as we are notified it has changed
my_condition.acquire()
my_condition.wait()
my_condition.release()
# return some val out of the DB
再一次,我正在寻找的东西与one-liners threading.wait()和threading.notifyAll()一样接近。我不介意设置一些配置甚至是在后台运行的东西 - 但是我有相当数量的代码依赖于在请求中间停止和等待的能力,直到通知它可以继续。< / p>
答案 0 :(得分:1)
在mod_wsgi配置中,设置processes = 1。有关详细信息,请参阅http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess。