Я хочу использовать Python setproctitle модуль для обновления имени процесса рабочего процесса WSGI python, когда он начинает работать над запросом. (Это делается для того, чтобы попытаться отследить, какие URL-адреса используют весь ЦП). Я написал простой класс промежуточного программного обеспечения Django, который будет вызывать setproctitle.setproctitle(request.path)
. Это отлично работает на сервере отладки django (т.е. python manage.py runserver
), т.е. я вижу URL-адрес запроса в выводе top
.
Однако, когда я пытаюсь запустить тот же код с помощью apache и mod_wsgi, происходит ошибка segfactory процесса wsgi при загрузке файла python промежуточного программного обеспечения. Ошибка в import setproctitle
линия. (операторы печати перед этой строкой выполняются, но не после).
Можно ли заставить setproctitle работать с wsgi?
Сервер - Ubuntu Linux, использующий apache, mod_wsgi и django.
Используйте gdb, чтобы выяснить, почему он вылетает. Видеть:
http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Debugging_Crashes_With_GDB
Если это не поможет вам решить проблему самостоятельно, предложите вам опубликовать все подробности в списке рассылки mod_wsgi, так как этот сайт плохо работает, когда требуется итеративная отладка проблемы.
Также попробуйте принудительно использовать основной интерпретатор Python, используя:
WSGIApplicationGroup %{GLOBAL}
Может случиться так, что модуль setproctitle не работает должным образом в суб-интерпретаторах, хотя я не понимаю, почему это не так, поскольку он должен быть просто оболочкой для одной функции и должен быть довольно простым.