[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