urllib3.PoolManager will keep sockets open if .clear() is not called on it. This can lead to running out of file descriptors. This can happen if you have a long running process that invokes a lot of threads, as it will never close any sockets, and eventually you'll run out of file descriptors.
See this github issue: urllib3/urllib3#1538