1

在使用pyppeteer控制 Chromium 期间,我大约在工作 20 秒后收到错误消息:

pyppeteer.errors.NetworkError: Protocol Error (Runtime.callFunctionOn): Session closed. Most likely the page has been closed.

如此处所述该问题可能是由 pythonwebsockets>=7包的实现及其在 pyppeteer 中的使用引起的。

4

1 回答 1

3

有 3 种解决方案可以防止与 Chromium 断开连接:

- 像这里描述的那样修补代码(首选)
在运行任何其他 Pyppeteer 命令之前运行代码段

def patch_pyppeteer():
    import pyppeteer.connection
    original_method = pyppeteer.connection.websockets.client.connect

    def new_method(*args, **kwargs):
        kwargs['ping_interval'] = None
        kwargs['ping_timeout'] = None
        return original_method(*args, **kwargs)

    pyppeteer.connection.websockets.client.connect = new_method

patch_pyppeteer()

- 更改制造麻烦的库:将包
降级为例如通过 (在您的虚拟环境中)websocketswebsockets-6.0pip3 install websockets==6.0 --force-reinstall

- 按照此拉取请求 中的描述更改代码库,希望很快合并。

于 2019-08-06T07:59:34.993 回答