python - 如果父进程(通过 Redis 队列)超时,如何关闭 Pupetteer 页面?
问题描述
我使用 subprocess.Popen 生成 puppeteer 会话以生成节点。但是,当节点作业花费太长时间时,python 进程会超时(我正在使用 python RQ 并且它已内置超时)。
但是,当这种情况发生时.. python 工作进程正常死亡,但我可以看到 puppetter 页面仍在运行。python 工作人员以某种方式与节点“断开连接”(未发送终止信号?)
我想杀死 nodejs / puppeteer 页面(通过超时或键盘中断)。这就是我所拥有的,但是当命令行 python 进程是 Ctrl-C'd 或 RQ 超时时,puppeteer 页面仍然可见:
with Popen(command, shell=True, stdout=PIPE, stderr=PIPE) as process:
try:
print(process.pid)
process.wait()
stdout, stderr = process.communicate()
print("stdout")
print(stdout)
print("stderr")
print(stderr)
except JobTimeoutException:
pass
except KeyboardInterrupt:
try:
process.terminate()
except OSError:
pass
process.wait()
finally:
# if process.poll() is None:
print("process killed")
process.send_signal(signal.SIGINT)
# stdout, stderr = process.communicate()