我使用projectwebkit2png(略加附加)在Linux中截图。在运行最新版本QtWebkit和python2.6的服务器上
在某些网站(如118114.cn)出现问题,应用程序将永远挂起。调试显示此代码段中的问题:
while self.__loading:
if timeout > 0 and time.time() >= cancelAt:
raise RuntimeError("Request timed out on %s" % url)
while QApplication.hasPendingEvents():
QCoreApplication.processEvents()
源代码的完整版本可用here(第270-275行)
无论如何,加载事件挂起和hasPendingEvents不能为False。在
大多数屏幕截图都是正常创建的,但有时由于某些网址的原因,我的应用程序:(
有人知道如何解决这个问题吗?事件为什么会挂起?在
我也在使用webkit2png+Linux,在我的macbookpro上进行本地测试时遇到了您描述的问题。问题似乎是QApplication.hasPendingEvents()错误地返回True,while循环挂起。我通过删除while循环来解决这个问题:
请注意,您还需要在__webkitrenderhelper.render在几个地方。做了这些改变后一切都对我有用-祝你好运。在
编辑:我相信我最初是通过升级底层QT库来解决Linux方面的这个问题的。Ubuntu10.04LTS(4.6.2)的默认版本有一个bug,在以后的版本中已经修复了。以下是我的安装信息:
^{pr2}$也许有一个重复的计时器?例如,页面上闪烁的光标将导致事件(计时器触发、视图失效、绘制等)持续可用。在
您可能需要插入一个超时逻辑,以便while循环退出,如果它已经运行太长时间了。在
我升级了libqtcore4,但这并不能解决我的问题。我不得不对webkit2进行Jeremy建议的更改巴布亚新几内亚.py在
在第230行附近还有两个对hasPendingEvents()的调用
^{pr2}$processEvents()将运行所有挂起的事件,最多3秒。到目前为止我还可以。不会呈现的网站现在出现了没有任何问题。如果需要超过3秒(服务器忙?)那么235上的while循环需要超时。在
相关问题 更多 >
编程相关推荐