【发布时间】:2014-07-14 08:07:33
【问题描述】:
我最近制作了一个 selenium 脚本来自动化通过 Firefox 中的网页生成测试数据的过程。该脚本从命令行运行,您可以在其中指定所需的测试数据类型,并且在许多情况下,这使脚本需要大约 15 分钟才能运行。
在此期间,我经常收到以下错误,该错误会终止脚本的任何延续:
OSError: [WinError 10055] An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.
当使用 netstat -b 时,我可以看到 Firefox 正在使用大量的连接(如果不是几千,也有几百个),它们都处于 TIME_WAIT 状态。因此,我猜测我的脚本以某种方式消耗了系统上的所有可用端口,但我不确定为什么。
是否每个 selenium 操作都使用自己的连接?这些连接在脚本完成运行之前不会关闭吗?
【问题讨论】:
-
在查找了 TIME_WAIT 的确切含义后,似乎这是每个套接字在关闭后进入的状态,并且它将保持此状态 2MSL 以确保重新使用此端口是安全的。因此,selenium 似乎确实关闭了连接,但它只是在很短的时间间隔内创建了太多的连接。是否有可能以某种方式规避这种行为?