class ServerWorker(multiprocessing.Process): def __init__(self,pipe,server): multiprocessing.Process.__init__(self) self.pipe = pipe self.server = server self.flag = True self.address = server['url'] self.db_server = Server(self.address) try: self.update_period = float(server.get('autoupdate')) except: self.update_period = None self.last_update = time() def update(self): #logging.debug("worker: update command for %s" % self.address) try: tasks = self.db_server.tasks() ver = "ver. %s" % self.db_server.version server_enabled = True; except: tasks = None ver = "-" server_enabled = False; self.last_update = time() self.pipe.send({"command": "update_server", "url": self.server['url'], "data":{"enabled": server_enabled, "updated": datetime.now(), "version": ver, "tasks": tasks}}) def run(self): while self.flag: while self.pipe.poll(): data = self.pipe.recv() if "command" in data: command = data['command'] if command == "update_server": self.update() elif command == "update_data": self.server = data['data'] self.address = self.server['url'] self.db_server = Server(self.address) try: self.update_period = float(self.server.get('autoupdate')) except: self.update_period = None elif command == "shutdown": logging.debug("worker: shutdown command for %s" % self.address) self.flag = False return sleep(0.05) if self.update_period and time() > self.last_update + self.update_period: self.update()
class ServerWorker(multiprocessing.Process): def __init__(self,pipe,server, default): multiprocessing.Process.__init__(self) self.tries = 0 self.pipe = pipe self.server = server self.flag = True self.address = server['url'] self.db_server = Server(str(self.address)) try: self.update_period = float(server.get('autoupdate')) except: self.update_period = float(default['autoupdate']) self.last_update = time() def update(self): #logging.debug("worker: update command for %s" % self.address) if self.server['enabled']: try: tasks = self.db_server.tasks() error = " " except: tasks = None error = sys.exc_value try: ver = "ver. %s" % self.db_server.version status = True self.tries = 0 except: ver = "-" status = False self.tries += 1 try: persistent = self.db_server['_replicator']['_all_docs'] except: persistent = None else: ver = "-" tasks = None persistent = None status = False self.last_update = time() if self.tries: update = datetime.now() - timedelta(seconds = self.update_period * self.tries) else: update = datetime.now() self.pipe.send({"command": "end_update_server", "url": self.server['url'], "data":{"enabled": self.server['enabled'], "updated": update, "version": ver, "status": status, "tasks": tasks, "error": error, "persistent":persistent}}) def run(self): while self.flag: while self.pipe.poll(): data = self.pipe.recv() if "command" in data: command = data['command'] if command == "update_server": self.update() elif command == "update_data": self.server = data['data'] self.address = self.server['url'] self.db_server = Server(str(self.address)) try: self.update_period = float(self.server.get('autoupdate')) except: self.update_period = None elif command == "shutdown": logging.debug("worker: shutdown command for %s" % self.address) self.flag = False return sleep(0.05) if self.update_period and time() > self.last_update + self.update_period and self.server['enabled']: self.update()