ошибка при выполнении приложения Qt4 с использованием модуля WSGI apache

У меня возникают проблемы с приложениями WSGI 3.3 и Qt4. Кажется, что элементы QGraphicsScene не могут вызывать метод childItem(). Следующий тестовый сценарий хорошо работает при вызове из командной строки, но никогда не завершается при вызове в качестве приложения WSGI. Я заметил, что эта проблема возникает при использовании WSGI v3.3, но не в более старых (2.8) версиях.

Метод childItems() зависает, и приложение перестает отвечать на запросы.

Любая подсказка о том, что может происходить?

from PyQt4.QtGui  import *

import sys
# Show print msgs in apache logs
sys.stdout = sys.stderr

import os
# Allows apache to use DISPLAY. The command "xhost +" could be temporarily required to start Qt applications from the web server
os.environ["DISPLAY"]=":0.0"

QApp = None
def application(environ, start_response):
    global QApp
    status = '200 OK'
    output = 'Hello World!'
    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    qt_test()

    return [output]

def qt_test():
    QApp = QApplication(["TEST"])
    scene = QGraphicsScene()
    obj = QGraphicsRectItem()
    scene.addItem(obj)
    print "EMPTY LIST", obj.childItems()
    obj2 = QGraphicsRectItem()
    obj2.setParentItem(obj)
    print "CHILDREN", obj.childItems()
    print "FINISH"
    return 

if __name__ == "__main__":
    qt_test()

среда (рабочая): python 2.6.4, apache 2.2.14, mod-wsgi 2.8, qt 4.6.2, python-qt 4.7.2

среда (проблема): python 2.6.6, 2.2.16, mod-wsgi 3.3, qt 4.6.3, python-qt 4.7.3


person jhc    schedule 25.10.2011    source источник


Ответы (1)


Люди из группы mod_wsgi указали мне на проблему:

Вы устанавливаете:

WSGIApplicationGroup %{GLOBAL}

в конфигурации апача.

person jhc    schedule 26.10.2011
comment
Причиной, скорее всего, является модуль расширения C, который не был кодом для работы с интерпретаторами Python. code.google.com/p/modwsgi/wiki/ - person Graham Dumpleton; 27.10.2011