""" Archivo que contiene la función request """ import json import time import requests def request(user=None, type_request=None, server=None, service=None, data=None, time_sleep=None): """ función que realiza un request con los datos y servicio seleccionados Parameters ---------- user: str type_request: str get,post,... server: str IP:puerto al que se llama service: str path relativo al que se llama data: dict diccionario con el data del servicio time_sleep: int tiempo en segundos que tarda en hacerse la siguiente petición al servicio Returns ------- """ t_0 = time.time() headers = {'content-type': 'application/json'} print("########################### {} ####################################".format(service)) print("Type: {} , service: {}{}".format(type_request, server, service)) if type_request == 'get': print(data) response = requests.get(url=server+service, params=data, headers=headers) print("GET ({}):{}".format(response.status_code, response.text)) elif type_request == 'post': response = requests.post(server+service, data=json.dumps(data), headers=headers) if response.apparent_encoding == 'UTF-8-SIG': print("POST ({}):{}".format(response.status_code, response.text)) else: print("POST ({}):{}".format(response.status_code, json.loads(response.text))) else: raise ValueError('Request no soportado') while True: if "task_id" not in json.loads(response.text).keys(): result = {} t_1 = time.time() t_t = round((t_1 - t_0) / 60, 3) print('\r tiempo: {} min'.format(t_t)) break task_id = json.loads(response.text)['task_id'] try: data = {"user": user, 'task_id': task_id} response_post_0 = requests.post(server + "/monitor/info", data=json.dumps(data), headers=headers) info = json.loads(response_post_0.text) t_1 = time.time() t_t = round((t_1 - t_0) / 60, 3) print('\r{}, tiempo: {} min'.format(info, t_t), end='') time.sleep(time_sleep) if info['status'] in ['DONE', 'ERROR']: print('\r{}, tiempo: {} min'.format(info, t_t)) result = requests.post(server + "/monitor/result", data=json.dumps(data), headers=headers) print("POST ({}):{}".format(result.status_code, json.loads(result.text))) break except KeyboardInterrupt: data = {"user": user, 'task_id': task_id} print('\nCancelling') response_post_0 = requests.post(server + "/monitor/cancel", data=json.dumps(data), headers=headers) print(response_post_0) try: for i in json.loads(result.text): # print(i,json.loads( result.text )[i]) if i == 'resultado' or i == 'mensajes': print(i, json.loads(result.text)[i]) except Exception: return