2010-09-30 7 views
0

Je ne peux pas utiliser des fils donc je veux écrire un programme serveur qui peut être interrompu après un certain temps:comment faire non bloquant accept() en Python?

 
d = show_non_modal_dialog("serving clients") 
s = socket(...) 
s.bind(...) 
s.listen() 
while (!user_pressed_cancel()) 
{ 
    s.accept() # timed accept for like 1 second 
    if timed_out: 
    continue 
    serve_client 
    close_client_sock 
} 
hide_non_modal_dialog(d) 

Répondre

3

Utilisez un socket non bloquant et d'acceptation d'appel à ce sujet.

s.setblocking(0) 

Vous pouvez également définir un délai d'attente pour bloquer les opérations de prise

socket.settimeout(value) 

Il semble aussi être un problème dans votre code

accept() retourne une (Conn, adresse) valeur paire . donc votre code aurait dû être

conn, address = s.accept() 
+0

Merci, ça fait l'affaire. –

Questions connexes