python - Xvfb IO 错误 : client killed

标签 python qt pyqt headless xvfb

我在 amazon ec2 ubuntu 12.04 上的 xvfb 服务器上运行以下 pyqt 应用程序,我从 qt 应用程序获得了正确的输出,但是当应用程序完成时我总是遇到上述错误。为什么会出现此错误?我认为这可能是因为 xvfb 服务器没有正确终止,但我不确定。

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from xvfbwrapper import Xvfb


args = {"nolisten":"tcp"}
vdisplay = Xvfb(**args)
vdisplay.start()
app = QApplication(sys.argv)
def update():
    print "upd"
t = QTimer()
t.start(500)
t.timeout.connect(update)
stopTimer = QTimer(timeout=app.quit,singleShot=True)
stopTimer.start(4000)
app.exec_()
print "done with app"
vdisplay.stop()

最佳答案

对我来说@urim 的解决方案不起作用,因为如果您不使用 vdisplay.stop(),Xvfb 进程在脚本退出时不会被杀死,这是个问题。我的解决方案是在一段时间后通过后台调用显式终止进程:

# Workaround for a problem preventing vdisplay.stop() to work
# normally, because apparently Qt is still keeping its handle on X
# at this point.
import os
os.system('(sleep 5 && kill -9 %d) &' % vdisplay.proc.pid)

关于python - Xvfb IO 错误 : client killed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17712301/

相关文章:

c++ - 如何在 std::unordered_map 中就地构造某个类的对象?

python-3.x - 使用 PyQt5 在浏览器中实现 Web 检查

python - 没有 QVariant 属性

Python:具有多个条件的 np.where

python - 如何绘制跟随鼠标光标的十字?

python - 尝试从 nltk 获取首字母缩略词

qt - 如何使 QSlider 只读?

python - 如何将 Ubuntu 启动器图标添加到我的 PySide 应用程序?

python - 如何检查一行是否以python中的单词或制表符或空格开头?

python - 如何使用Python绘制模拟几何随机变量的直方图?