def publish(self, resp): line = self._marshaller.to_string(resp) start = time.time() try: r = self._session.post(self._url, data=line, auth=self._auth, timeout=5) if r.status_code != 201: log.error("Error [%s], Request [%s]", r.text, line) finally: log_request(resp, log, 'Response: %s [%s] seconds', line, time.time() - start)
def _worker_main(worker_name, queue, ppid): agent = Agent() marshaller = type_manager.get_type(type_manager.MARSHALLER) publisher = type_manager.get_type(type_manager.PUBLISHER) while True: try: req = None line = queue.get(True, 5) req = marshaller.from_string(line) utils.log_request(req, log, 'Request: %s', line) id = req.id start = time.time() try: utils.log_request(req, log, '%s : Starting request %s for %s', worker_name, id, req.name) resp = agent.execute(req) if resp is not None: publisher.publish(resp) finally: duration = time.time() - start utils.log_request(req, log, '%s : Done request %s for %s [%s] seconds', worker_name, id, req.name, duration) except Empty: if not _should_run(ppid): break except FailedToLock as e: log.info("%s for %s", e, req.name) if not _should_run(ppid): break except Exception as e: error_id = str(uuid.uuid4()) log.exception("%s : Unknown error", error_id) if not _should_run(ppid): break if req is not None: msg = "{0} : {1}".format(error_id, e) resp = utils.reply(req) if resp is not None: resp["transitioning"] = "error" resp["transitioningInternalMessage"] = msg publisher.publish(resp)