23

Question: Is there some sort of time out or interrupt to the socket.accept() function in python?


Info:

I have a program that has a child thread bound to a port and constantly accepting and tending and passing them to a queue for the main thread. Right now I'm trying to get the child thread to interrupt so it can deconstruct appropriately. I think it is possible for me to just simply stop the child thread and have the parent deconstruct the child, but there are other times where I want to be able to return early form accept so I just decided that would be the most useful approach.

So, is there a way that I can have a time out or cancel the accept method so the thread can return w/o having something connect to it first?

asked Sep 8, 2011 at 21:05

3 Answers 3

22

You can use settimeout() as in this example:

import socket
tcpServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
tcpServer.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcpServer.settimeout(0.2) # timeout for listening
tcpServer.bind(('0.0.0.0', 10000)) # IP and PORT
tcpServer.listen(1)
stopped = False
while not stopped:
 try: 
 (conn, (ip, port)) = tcpServer.accept() 
 except socket.timeout:
 pass
 except:
 raise
 else:
 # work with the connection, create a thread etc.
 ...

The loop will run until stopped is set to true and then exit after (at most) the timeout you have set. (In my application I pass the connection handle to a newly created thread and continue the loop in order to be able to accept further simultaneous connections.)

gekigek99
3133 silver badges17 bronze badges
answered Jan 13, 2017 at 21:41
Sign up to request clarification or add additional context in comments.

Comments

16

You can set the default timeout with

import socket
print socket.getdefaulttimeout()
socket.setdefaulttimeout(60)

AFAIK This will affect all the socket operation

answered Sep 8, 2011 at 21:13

1 Comment

it will? ok. when i read the documentation it made it sound like that only effected send and recv. thanks!
8

Maybe settimeout() is what you're looking for.

answered Sep 8, 2011 at 21:13

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.