To Stop a Process that is Waiting on socket.accept()

Steve Holden steve at holdenweb.com
Fri Oct 27 01:42:23 EDT 2006


mumebuhi wrote:
> I am having problem to kill the following script completely. The script
> basically does the following. The main thread creates a new thread,
> which does a completely useless thing, and then starts excepting for a
> connection via socket.
> 
> # start
> import pickle
> import signal
> import simplejson
> import socket
> import sys
> import threading
> import time
> 
> counter = 0
> 
> class WorkerThread(threading.Thread):
> 	def run(self):
> 		global counter
> 		while True:
> 			counter += 1
> 			time.sleep(10)
> 
> worker_thread = WorkerThread()
> worker_thread.start()
> 
> server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> server.bind(('', 2727))
> server.listen(2)
> 
> def cleanup(signal, frame):
> 	print "die now"
> 	worker_thread.join(1)
> 	server.shutdown(socket.SHUT_RDWR)
> 	sys.exit(0)
> signal.signal(signal.SIGINT, cleanup)
> 
> while True:
> 	channel, details = server.accept()
> 	stats = { 'key': "value" }
> 	s = simplejson.dumps(stats)
> 	channel.send(s)
> 	channel.close()
> # end
> 
> The way I can think of right now is to kill the script using Ctrl+C.
> Hence, the signal handler in the code. However, the interpreter
> complains:
> ---start---
> Traceback (most recent call last):
>   File "ex_server.py", line 35, in ?
>     channel, details = server.accept()
>   File "/usr/lib/python2.4/socket.py", line 169, in accept
>     sock, addr = self._sock.accept()
>   File "ex_server.py", line 30, in cleanup
>     server.shutdown(SHUT_RDWR)
> NameError: global name 'SHUT_RDWR' is not defined
> ---end---
> 
> Can anybody suggest a better way to do this?
> 
You haven't copied the code you are actually running. The program above 
may or may not work, but compare the server.shutdown line in the 
traceback with the server.shutdown line in the program and you'll see 
they aren't the same.

regards
  Steve
-- 
Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC/Ltd          http://www.holdenweb.com
Skype: holdenweb       http://holdenweb.blogspot.com
Recent Ramblings     http://del.icio.us/steve.holden




More information about the Python-list mailing list