Closed1
Python で selenium を使ったときに ResourceWarning: unclosed のログが出る時の対処
事象
selenium の Remote webdriver を使った unittest でこんな warning のログが大量に出る
/root/.cache/pypoetry/virtualenvs/app-9TtSrW0h-py3.9/lib/python3.9/site-packages/selenium/webdriver/remote/remote_connection.py:374: ResourceWarning: unclosed <socket.socket fd=3, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('172.28.0.3', 49290), raddr=('172.28.0.2', 4444)>
return self._request(command_info[0], url, body=data)
ResourceWarning: Enable tracemalloc to get the object allocation traceback
原因
- 該当の warning が発生している箇所はここ
- keep alive が有効になっている時はコネクションのクローズが実装されているが、keep alive 無効の場合にはコネクションのクローズがされてないことが原因と思われる
対処
-
webdriver.Remote
のコンストラクタ引数にkeep_alive=True
をセットする
メモ
- master のコードを見ると keep_alive ではない場合のコネクションが with ブロックで処理されているのでこの問題は解消されているっぽい
- 現時点で pypi で公開されている selenium 3.141.0 にはこの修正は入ってない
- 次バージョンの 4.0.0 には含まれているがメジャーバージョンアップなので変更デカすぎ
このスクラップは2021/02/24にクローズされました