已修复此问题已通过将QApplication移出main()修复。
您好我正在尝试实现一个执行给定URL的JavaScript代码并返回最终HTML的Web服务。我正在使用PyQt4进行JS处理和Django 1.4 Web框架。 问题是:脚本总是在命令邀请中工作,但是当我将它集成到Django时,它只在运行Django本地服务器后第一次工作,然后在下面的执行中警告:
WARNING: QApplication was not created in the main() thread
QObject::startTimer: QTimer can only be used with threads started with QThread
我得错了结果。 问题是我没有使用任何线程...... 这是我在Django上使用的脚本(urlconf导致这个主要功能给出了url):
#!/usr/bin/env python
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
from time import time, sleep
app = QApplication(sys.argv)
def wait(app, secs=1):
deadline = time() + secs
while time() < deadline:
sleep(0)
app.processEvents()
def main(url):
# app = QApplication(sys.argv)
web = QWebView()
web.load(QUrl(url))
wait(app, 15)
return web.page().mainFrame().toHtml().toUtf8()
您之前是否看过这个或试图做类似的事情?请帮助我提供任何信息,谢谢
P.S。这是我在这里的第一篇文章,我希望一切都清楚:)
编辑由于Rostyslav的警告已经消失,但我仍然有销售问题。
答案 0 :(得分:1)
实际上你使用线程。
Django开发服务器默认使用线程。您可以将可选的--nothreading
参数传递给runserver
命令,该命令旨在禁用服务器使用线程:
python ./manage.py runserver --nothreading ...