[python] Problem s forkujicim serverem a SIGTERM signalem

David Michal dmichal na altien.com
Středa Prosinec 17 15:53:51 CET 2008


Ja teda neumim vysvetlit proc nejde exit ale co to zkusit takhle:

sysexit = False

def cleanup(signal, frame):
     """Clean up the server before shutdown.
     """
     # SIGTERM signal
     if signal == 15:
         print "Received SIGTERM signal, waiting for clients
 termination"
         while True:
             # In case that there isn't any active clients
             if not clients:
                 break
         sysexit = True

 # Nadrazena smycka:
  while not sysexit:
         # Handle the child temination
         signal.signal(signal.SIGCHLD,reap)
 
         # Catch the SIGTERM signal
         signal.signal(signal.SIGTERM, cleanup)
         #signal.pause()
         try:
             connection,address = sock.accept()

> -----Original Message-----
> From: python-bounces na py.cz [mailto:python-bounces na py.cz] On Behalf Of
> Lumír Jasiok
> Sent: Wednesday, December 17, 2008 2:26 PM
> To: Konference PyCZ
> Subject: [python] Problem s forkujicim serverem a SIGTERM signalem
> 
> Dobry den,
> 
> potreboval bych poradit s nasledujicim problemem. Mam napsany
> jednoduchy
> forkujici TCP/IP server. Server jako takovy funguje, child procesy se
> vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent
> procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM.
> Mam
> osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na
> ukonceni vsech child procesu a pak by se mel ukoncit i parent proces
> pomoci sys.exit(0). To se ale nestane, parent proces (server) se
> neukonci, ale skoci do nadrazene while smycky a dale ceka na spojeni a
> je schopen obsluhovat prichozi spojeni. Relevantni kod:
> 



Další informace o konferenci Python