selenium 退出EC2示例时出现Chromedriver错误

n6lpvg4x  于 2022-11-24  发布在  其他
关注(0)|答案(2)|浏览(146)

我正在使用Selenium在Ubuntu EC2机器上运行一个非常简单的脚本。
我将下一段代码放在一个循环中,因为脚本应该永远在后台运行:

from selenium import webdriver

def play():
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("enable-automation")
chrome_options.add_argument("--disable-infobars")
chrome_options.add_argument("--disable-dev-shm-usage")
try:
    driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver', options=chrome_options)
except Exception as e:
    with open(f'{os.getcwd()}/error_log.txt', 'a') as f:
        f.write(str(datetime.datetime.now()))
        f.write(str(e))

当使用ssh连接到示例时,脚本可以完美地运行,但是当断开连接时,我得到以下错误:

Message: Service /usr/bin/chromedriver unexpectedly exited. Status code was: 1

重新连接后,脚本再次正常工作,没有任何接触。
我运行的脚本如下:

nohup python3 script.py &
pjngdqdw

pjngdqdw1#

当您从ssh运行一个进程时,它被绑定到您的终端会话,因此一旦您关闭会话,所有从属进程都将终止。
有很多选择如何处理。几乎所有的都意味着你安装了一些额外的工具,可能是特定于你的特定操作系统。
下面是一些关于这个问题的不错的帖子:
https://serverfault.com/questions/463366/does-getting-disconnected-from-an-ssh-session-kill-your-programs
https://askubuntu.com/questions/8653/how-to-keep-processes-running-after-ending-ssh-session
如何在不终止正在运行的进程的情况下分离ssh会话#:~:text= ssh到您的远程框中,但让您的进程继续运行。

esyap4oy

esyap4oy2#

您正在运行的命令已附加到您的shell会话。为了保持脚本运行,请使用nohup,这样即使您断开了shell会话,进程也可以继续。
在计算机上尝试以下操作

nohup ./script.py > foo.out 2> foo.err < /dev/null &

参见原答案here

相关问题