def work_forever(self,):
self.quit = False
self.timeout = 0.5
- logger.info("PRServer: started! DBfile: %s, IP: %s, PORT: %s, PID: %s" %
+
+ logger.info("Started PRServer with DBfile: %s, IP: %s, PORT: %s, PID: %s" %
(self.dbfile, self.host, self.port, str(os.getpid())))
while not self.quit:
return
def start(self):
- self.daemonize()
+ pid = self.daemonize()
+ # Ensure both the parent sees this and the child from the work_forever log entry above
+ logger.info("Started PRServer with DBfile: %s, IP: %s, PORT: %s, PID: %s" %
+ (self.dbfile, self.host, self.port, str(pid)))
def delpid(self):
os.remove(self.pidfile)
if pid > 0:
os.waitpid(pid, 0)
#parent return instead of exit to give control
- return
+ return pid
except OSError as e:
raise Exception("%s [%d]" % (e.strerror, e.errno))
os.dup2(so.fileno(),sys.stdout.fileno())
os.dup2(se.fileno(),sys.stderr.fileno())
+ # Ensure logging makes it to the logfile
+ streamhandler = logging.StreamHandler()
+ streamhandler.setLevel(logging.DEBUG)
+ formatter = bb.msg.BBLogFormatter("%(levelname)s: %(message)s")
+ streamhandler.setFormatter(formatter)
+ logger.addHandler(streamhandler)
+
# write pidfile
- atexit.register(self.delpid)
pid = str(os.getpid())
pf = file(self.pidfile, 'w')
pf.write("%s\n" % pid)
pf.close()
self.work_forever()
+ self.delpid
os._exit(0)
class PRServSingleton():
import socket
socket.setdefaulttimeout(2)
try:
+ logger.info("Terminating PRServer...")
self.connection.quit()
except Exception as exc:
sys.stderr.write("%s\n" % str(exc))