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