Python-Django和PyQt4的问题

时间:2012-08-16 13:30:59

标签: javascript python django web-scraping pyqt4

已修复此问题已通过将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的警告已经消失,但我仍然有销售问题。

1 个答案:

答案 0 :(得分:1)

实际上你使用线程

Django开发服务器默认使用线程。您可以将可选的--nothreading参数传递给runserver命令,该命令旨在禁用服务器使用线程:

python ./manage.py runserver --nothreading ...