首页 > 解决方案 > Selenium:与 AWS Lambda 首次成功连接后连接被拒绝

问题描述

在使用 Python 3.6 成功部署 AWS Lambda + REST API Selenium 程序包并对其进行测试(HTTP 请求或直接从 Lambda 仪表板)后,我无法再次执行脚本并显示错误[Errno 111] Connection refused"

我可以解决此问题的唯一方法是更改​​仪表板中的随机配置,例如分配的内存、PATH 或并发设置。换句话说,我必须手动重新部署整个 Lambda 包才能让它再次工作。

我已经用谷歌搜索了几个小时,似乎该错误与已在使用的端口有关,但我的 Python 脚本driver.close()在 return 命令之前结束,所以我看不到这是从哪里来的。每次执行我的脚本时,有没有办法手动重新部署 lambda 包?甚至更好:我该如何解决这个问题?

以下是我使用的所有选项:

hrome_options.add_argument('--disable-extensions')

chrome_options.add_argument('--allow-insecure-localhost')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--user-data-dir=/tmp/user-data')
chrome_options.add_argument('--enable-logging')
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--window-size=1280,1000')
chrome_options.add_argument('--allow-running-insecure-content')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--log-level=0')
chrome_options.add_argument('--v=99')
chrome_options.add_argument('--single-process')
chrome_options.add_argument('--data-path=/tmp/data-path')
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--homedir=/tmp')
chrome_options.add_argument('--disk-cache-dir=/tmp/cache-dir')
chrome_options.add_argument('user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36')
chrome_options.binary_location = os.getcwd() + "/bin/headless-chromium"

driver = webdriver.Chrome(chrome_options=chrome_options)
dynamo = boto3.client('dynamodb')

标签: pythonamazon-web-servicesseleniumaws-lambdagoogle-chrome-headless

解决方案


您可能想尝试一下driver.quit(),因为driver.close()通常不足以终止WebDriver会话。

driver.close函数仅关闭当前焦点所在的浏览器窗口。该driver.quit函数调用内部driver.dispose函数,关闭所有浏览器窗口,然后优雅地终止WebDriver会话。


推荐阅读