我正在尝试使用middleware来分析WSGI应用程序。这个中间件使用plop
,这是一个依赖于signal
模块的python低开销分析器。
如果我通过运行./manage.py runserver --forked
来运行使用此中间件的Django应用程序,那么它的中间件可以按预期工作。但是,当相同的Django应用程序通过mod_wsgi
在apache上运行时,它无法正常工作。
mod_wsgi
实例配置了WSGIRestrictSignal Off
和WSGIDaemonProcess example processes=5 threads=1
,当运行Django应用时,会出现以下错误:
ValueError: signal only works in main thread
如果我在没有--forked
标志的情况下运行开发服务器,则会出现同样的错误。我不认为它应该与apache一起发生,因为线程数是1。
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
使用在样本之间执行sleep()的后台线程应该在技术上有效并且在我自己完成之前使用了该方法。
有一个为此目的创建后台线程的示例:
http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Extracting_Python_Stack_Traces