class Daemon(object): def __init__(self, daemon_id): self._daemon_id = daemon_id self._start_xmlrpc() self._write_daemon_pids() def _start_xmlrpc(self): port = None if is_developer_mode(): port = 8080 self._xmlrpc = XMLRPCService(port) self._xmlrpc.serve() def _write_daemon_pids(self): appdir = get_application_dir() daemondir = os.path.join(appdir, 'daemon', self._daemon_id) os.makedirs(daemondir) port = os.path.join(daemondir, 'port') open(port, 'w').write('%s\n' % (self._xmlrpc.port, )) def _check_active(self): if not self._xmlrpc.is_active(): self.shutdown() def shutdown(self): reactor.stop() def run(self): reactor.run()
class Daemon(threading.Thread): def __init__(self, port=None): threading.Thread.__init__(self) self.port = port if self.port is None and is_developer_mode(): self.port = 8080 # Indicate that this Thread is a daemon. Accordingly to the # documentation, the entire python program exits when no alive # non-daemon threads are left. self.daemon = True self.running = False # # Public API # def run(self): self._xmlrpc = XMLRPCService(self.port) self._xmlrpc.serve() self.port = self._xmlrpc.port self.running = True def stop(self): terminate_thread(self) self.port = None self.running = False
def _start_xmlrpc(self): port = None if is_developer_mode(): port = 8080 self._xmlrpc = XMLRPCService(port) self._xmlrpc.serve()
def run(self): port = 8080 if is_developer_mode() else None self._xmlrpc = XMLRPCService(port) self._xmlrpc.serve() self.port = self._xmlrpc.port
def run(self): self._xmlrpc = XMLRPCService(self.port) self._xmlrpc.serve() self.port = self._xmlrpc.port self.running = True