多线程连接池报错报警告[connectionpool.py:305 ] [WARNING] Connection pool is full, discarding connection: 127.0.0.1. Connection pool size: 1

第一种方法:

按照建议

WebDriverWait
帮助解决了问题

 

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException

我用过例如

text_box = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,"the_actual_X_path")))

copy_button = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,
                                    "the_actual_X_path")))

第二种方法(我用这个没有报警告了):

你可以在webdriver初始化中使用参数 keep_alive=False,这是因为selenium使用connectionPool管理连接,如果keep_alive为True,它只使用webdriver实例中唯一的connectionPool,所以当多线程操作默认设置的单个connectionPool时maxSize 1,线程1获取连接1,线程2无法获取连接并创建新连接,当它们的请求结束并将连接放回到池中时,发生错误,这两个连接将被放入1大小的池中,你可以看到详细信息在来自 urllib3 和 selenium 的 ConnectionPool.py 中

之前是这样的:

self.driver = webdriver.Chrome()
添加参数:
self.driver = webdriver.Chrome(keep_alive=False)
运行不会报警告了(selenium的版本是selenium==3.141.0)
 
或将ConnectionPool.py 中的maxSize修改大于1

 

posted @ 2023-11-30 19:10  星钥无痕  阅读(409)  评论(0编辑  收藏  举报