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