如何使用mod_wsgi的信号,每个进程一个线程?

时间:2012-08-22 22:47:45

标签: python signals mod-wsgi

我正在尝试使用middleware来分析WSGI应用程序。这个中间件使用plop,这是一个依赖于signal模块的python低开销分析器。

如果我通过运行./manage.py runserver --forked来运行使用此中间件的Django应用程序,那么它的中间件可以按预期工作。但是,当相同的Django应用程序通过mod_wsgi在apache上运行时,它无法正常工作。

mod_wsgi实例配置了WSGIRestrictSignal OffWSGIDaemonProcess example processes=5 threads=1,当运行Django应用时,会出现以下错误:

ValueError: signal only works in main thread

如果我在没有--forked标志的情况下运行开发服务器,则会出现同样的错误。我不认为它应该与apache一起发生,因为线程数是1。

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

使用在样本之间执行sleep()的后台线程应该在技术上有效并且在我自己完成之前使用了该方法。

有一个为此目的创建后台线程的示例:

http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Extracting_Python_Stack_Traces