Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fast way to test if a port is in use using Python

Tags:

I have a python server that listens on a couple sockets. At startup, I try to connect to these sockets before listening, so I can be sure that nothing else is already using that port. This adds about three seconds to my server's startup (which is about .54 seconds without the test) and I'd like to trim it down. Since I'm only testing localhost, I think a timeout of about 50 milliseconds is more than ample for that. Unfortunately, the socket.setdefaulttimeout(50) method doesn't seem to work for some reason.

How I can trim this down?

like image 283
directedition Avatar asked Mar 18 '10 15:03

directedition


1 Answers

To check port use:

def is_port_in_use(port: int) -> bool:     import socket     with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:         return s.connect_ex(('localhost', port)) == 0 

source: https://codereview.stackexchange.com/questions/116450/find-available-ports-on-localhost

like image 162
Rugnar Avatar answered Sep 20 '22 15:09

Rugnar