我想使用python setproctitle模块来更新python WSGI工作进程在开始处理请求时的进程名称。 (这是为了追踪哪些URL正在使用所有的CPU)。 我写了一个简单的Django中间件类,它将调用setproctitle.setproctitle(request.path) 。 这在djangodebugging服务器(即python manage.py runserver )中工作正常,即我可以在top的输出中看到请求URL。
但是,当我尝试运行相同的代码使用Apache&mod_wsgi时,加载中间件python文件的wsgi进程segfaults。 它在import setproctitle线处发生段错误。 (在该行之前的打印语句被执行,但不在之后)。
是否有可能得到setproctitle与wsgi工作?
服务器是Ubuntu Linux,使用apache,mod_wsgi和django。
使用gdb找出为什么它崩溃。 看到:
http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Debugging_Crashes_With_GDB
如果这不能帮助你自己解决问题,那么build议你将所有的细节发布到mod_wsgi邮件列表中,因为当需要迭代地debugging问题时,这个站点不能很好地工作。
另外尝试强制使用主要的Python解释器使用:
WSGIApplicationGroup %{GLOBAL}
这可能是setproctitle模块在子解释器中不能正常工作的情况,尽pipe我不明白为什么它不应该只是单个函数的包装,而应该很简单。