コード例 #1
0
ファイル: workers.py プロジェクト: kraizman/couchman
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()
コード例 #2
0
ファイル: workers.py プロジェクト: kolyanu4/couchman
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()