fix restart problem
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
# $Id: hbd,v 1.38 2013/07/14 02:25:05 andreas Exp $
|
# $Id: hbd,v 1.38 2013/07/14 02:25:05 andreas Exp $
|
||||||
# Wait for heartbeat messages and act on them (or their absence)
|
# Wait for heartbeat messages and act on them (or their absence)
|
||||||
#
|
#
|
||||||
VER = 1.38
|
VER = 1.51
|
||||||
|
|
||||||
import time, os, string, sys, socket, atexit, select, SocketServer, getopt, signal, cPickle, smtplib, traceback, urllib
|
import time, os, string, sys, socket, atexit, select, SocketServer, getopt, signal, cPickle, smtplib, traceback, urllib
|
||||||
|
|
||||||
@@ -500,10 +500,11 @@ def exitcurses():
|
|||||||
curses.endwin()
|
curses.endwin()
|
||||||
|
|
||||||
|
|
||||||
|
class HtmlServer(SocketServer.TCPServer):
|
||||||
|
allow_reuse_address = True
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
class HtmlHandler(SocketServer.BaseRequestHandler):
|
class HtmlHandler(SocketServer.BaseRequestHandler):
|
||||||
allow_reuse_address = True
|
|
||||||
|
|
||||||
|
|
||||||
def buildhead(self, title="Heartbeat", refresh=None):
|
def buildhead(self, title="Heartbeat", refresh=None):
|
||||||
@@ -536,6 +537,7 @@ class HtmlHandler(SocketServer.BaseRequestHandler):
|
|||||||
|
|
||||||
|
|
||||||
def handle(self):
|
def handle(self):
|
||||||
|
global sig, running
|
||||||
headers=[]
|
headers=[]
|
||||||
headers.append("Date: %s" % time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)))
|
headers.append("Date: %s" % time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(now)))
|
||||||
headers.append("Server: hbd")
|
headers.append("Server: hbd")
|
||||||
@@ -586,6 +588,13 @@ class HtmlHandler(SocketServer.BaseRequestHandler):
|
|||||||
res=self.buildhead()
|
res=self.buildhead()
|
||||||
res.append("Done")
|
res.append("Done")
|
||||||
|
|
||||||
|
elif upar[0] == "/r": # restart
|
||||||
|
res=self.buildhead()
|
||||||
|
res.append("restart request")
|
||||||
|
sig=signal.SIGHUP
|
||||||
|
running=False
|
||||||
|
log("restart request")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
code = 404
|
code = 404
|
||||||
cause = "Not Found"
|
cause = "Not Found"
|
||||||
@@ -612,13 +621,9 @@ class HtmlHandler(SocketServer.BaseRequestHandler):
|
|||||||
|
|
||||||
|
|
||||||
def saveandrestart():
|
def saveandrestart():
|
||||||
if DEBUG: sys.stderr.write("mark 1\n")
|
|
||||||
sock.close()
|
sock.close()
|
||||||
# if DEBUG: sys.stderr.write("mark 2\n")
|
|
||||||
# serv.shutdown() #N.B. dont shutdown() as we don't use serv_forever
|
# serv.shutdown() #N.B. dont shutdown() as we don't use serv_forever
|
||||||
if DEBUG: sys.stderr.write("mark 3\n")
|
|
||||||
serv.server_close()
|
serv.server_close()
|
||||||
if DEBUG: sys.stderr.write("mark 4\n")
|
|
||||||
log("restarting")
|
log("restarting")
|
||||||
os.execv(sys.argv[0], [sys.argv[0]]+cmdargs)
|
os.execv(sys.argv[0], [sys.argv[0]]+cmdargs)
|
||||||
|
|
||||||
@@ -791,7 +796,7 @@ sock.bind(("", hb_port))
|
|||||||
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||||
ilist.append(sock)
|
ilist.append(sock)
|
||||||
|
|
||||||
serv = SocketServer.TCPServer((hbd_host, hbd_port), HtmlHandler)
|
serv = HtmlServer((hbd_host, hbd_port), HtmlHandler)
|
||||||
ilist.append(serv.fileno())
|
ilist.append(serv.fileno())
|
||||||
|
|
||||||
if not forground:
|
if not forground:
|
||||||
|
|||||||
Reference in New Issue
Block a user