在使用 PyVirtualDisplay 时,试图找到如何避免在我们的 Python 应用程序中挂起 Xvfb 进程。根本问题是调用display.stop()
(参见下面的代码示例)似乎没有正确关闭 Xvfb 进程。
PyVirtualDisplay 的使用非常简单:
from pyvirtualdisplay import Display
display = Display(backend='xvfb')
display.start()
... # Some stuff happens here
display.stop()
现在,Display 类稍作修改以防止 Xvfb 使用 TCP 端口:基本上,添加-nolisten tcp
到正在执行的命令中。修改是通过覆盖适当的 XfvbDisplay 类的 _cmd 属性来完成的:
@property
def _cmd(self):
cmd = [PROGRAM,
dict(black='-br', white='-wr')[self.bgcolor],
'-screen',
str(self.screen),
'x'.join(map(str, list(self.size) + [self.color_depth])),
self.new_display_var,
'-nolisten',
'tcp'
]
return cmd
在这种情况下结束 Xvfb 进程的正确方法是什么,以便它们被终止并且不会逗留?
非常感谢!