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? Thank you. Buhi -- http://mail.python.org/mailman/listinfo/python-list