def execute_task_on_worker(self, worker, task): try: message = simplejson.dumps(task.as_descriptor(), cls=SWReferenceJSONEncoder) post_string_noreturn( "http://%s/control/task/" % (worker.netloc), message, result_callback=self.worker_post_result_callback) except: self.worker_failed(worker)
def abort_task_on_worker(self, task, worker): try: ciel.log("Aborting task %s on worker %s" % (task.task_id, worker), "WORKER_POOL", logging.WARNING) post_string_noreturn( 'http://%s/control/abort/%s/%s' % (worker.netloc, task.job.id, task.task_id), "", result_callback=self.worker_post_result_callback) except: self.worker_failed(worker)
def backoff_request(self, url, method, payload=None, num_attempts=1, initial_wait=0, need_result=True): initial_wait = 5 for _ in range(0, num_attempts): if self.stop_event.is_set(): break try: try: if method == "POST": if need_result or num_attempts > 1: content = post_string(url, payload) else: post_string_noreturn(url, payload, result_callback=self. master_post_result_callback) return elif method == "GET": content = get_string(url) else: raise Exception("Invalid method %s" % method) return 200, content except Exception as e: ciel.log( "Backoff-request failed with exception %s; re-raising MasterNotResponding" % e, "MASTER_PROXY", logging.ERROR) raise MasterNotRespondingException() except: ciel.log.error("Error contacting master", "MSTRPRXY", logging.WARN, True) self.stop_event.wait(initial_wait) initial_wait += initial_wait * random.uniform(0.5, 1.5) ciel.log.error("Given up trying to contact master", "MSTRPRXY", logging.ERROR, True) if self.stop_event.is_set(): raise WorkerShutdownException() else: raise MasterNotRespondingException()
def abort_task_on_worker(self, task, worker): try: ciel.log("Aborting task %s on worker %s" % (task.task_id, worker), "WORKER_POOL", logging.WARNING) post_string_noreturn('http://%s/control/abort/%s/%s' % (worker.netloc, task.job.id, task.task_id), "", result_callback=self.worker_post_result_callback) except: self.worker_failed(worker)
def execute_task_on_worker(self, worker, task): try: message = simplejson.dumps(task.as_descriptor(), cls=SWReferenceJSONEncoder) post_string_noreturn("http://%s/control/task/" % (worker.netloc), message, result_callback=self.worker_post_result_callback) except: self.worker_failed(worker)