У меня проблемы с приложениями 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