コード例 #1
0
ファイル: api.py プロジェクト: pvicente/KatooServer
 def relogin(self, xmppuser, pending_jobs):
     len_pending_jobs = len(pending_jobs)
     self.log.info('RELOGIN %s. Pending_Jobs: %s. Data: %s', xmppuser.jid, len_pending_jobs, xmppuser)
     try:
         yield self._shared_login(xmppuser)
         running_client = KatooApp().getService(xmppuser.userid)
         self.log.info('RELOGIN %s. Running xmppclient: %s', xmppuser.jid, running_client)
     except XMPPUserAlreadyLogged:
         #If user is already logged xmppuser data is valid and we take it as xmppuser
         running_client = KatooApp().getService(xmppuser.userid)
         self.log.warning('RELOGIN %s. User Already logged taking user to perform RELOGIN process. Running xmppclient: %s', xmppuser.jid, running_client)
         xmppuser = running_client.user
         xmppuser.worker = xmppuser.userid
     
     try:
         xmppuser.onMigrationTime = Timer().utcnow()
         res = yield xmppuser.save()
         self.log.info('perform relogin %s. Enqueuing pending jobs %s before migration was launched. Data %s. Save result: %s', xmppuser.jid, len_pending_jobs, running_client, res)
         
         queue = Queue(conf.MACHINEID)
         
         #Enqueue pending jobs before migration was launched
         for job_id in pending_jobs:
             try:
                 job = yield Job.fetch(job_id, queue.connection)
                 yield queue.enqueue_job(job)
             except NoSuchJobError:
                 pass
         self.log.info('perform relogin %s. Finished enqueuing pending jobs before migration was launched.', xmppuser.jid)
         
         self.log.info('perform relogin %s. Enqueing pending jobs after migration was launched.', xmppuser.jid)
         #Enqueue pending jobs after migration was launched
         migration_queue = Queue(xmppuser.userid)
         migration_job_ids = yield migration_queue.job_ids
         yield migration_queue.empty()
         
         while migration_job_ids:
             job_id = migration_job_ids.pop(0)
             try:
                 job = yield Job.fetch(job_id, migration_queue.connection)
                 #Enqueue job in current worker queue
                 yield queue.enqueue_job(job)
             except NoSuchJobError:
                 pass
             
             if not migration_job_ids:
                 xmppuser.worker=conf.MACHINEID
                 xmppuser.onMigrationTime=''
                 yield xmppuser.save()
                 
                 migration_job_ids = yield migration_queue.job_ids
                 yield migration_queue.empty()
         
     finally:
         xmppuser.worker = conf.MACHINEID
         xmppuser.onMigrationTime=''
         res = yield xmppuser.save()
         self.log.info('RELOGIN %s. Finished. Data %s. Save result: %s', xmppuser.jid, xmppuser, res)
コード例 #2
0
    def removeWorker(self, name):
        self.log.info("Removing worker/queue %s from system", name)
        #Remove worker from death workers
        worker = Worker(queues=[], name=name)
        yield worker.remove(worker.key)

        #Remove own queue of worker
        queue = Queue(name)
        yield queue.empty()