socket.SO_REUSEADDR

Gordon McMillan gmcm at hypernet.com
Thu Apr 20 08:05:39 EDT 2000


Michael Ströder wrote:
 
> For avoiding problems with errors like
> 
>   socket.error: (98, 'Address already in use.')
> 
> during immediate restart of my web server I'm following the hint to
> set the socket option SO_REUSEADDR. But I did not succeed. The
> server starts and works. When I stop it and try to restart
> immediately the above message appears again. I had a short look at
> man 7 socket and man setsockopt but this was a little bit too much
> for me...

> My code looks like this:
> 
> ------------------------ bite here -------------------------
> class MyHTTPServer(SocketServer.TCPServer):
> 
>   def server_bind(self):
>     """Override server_bind to set socket options."""
>     self.socket.setsockopt(
>       socket.getprotobyname('tcp'),
>       socket.SO_REUSEADDR,1
>     )
>     SocketServer.TCPServer.server_bind(self)
> ------------------------------------------------------------

You need socket.SOL_SOCKET, not 
socket.getprotobyname(). But there's still no substitute for a 
try / finally that closes the socket explicitly.




- Gordon




More information about the Python-list mailing list