-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Nueva clase IoT #70
Nueva clase IoT #70
Conversation
…. Mejora en el manejo de excepciones.
Tras revisarlo en conjunto con @arcosa (autor principal de esta libreria) os pasamos el siguiente feedback: Como comentario principal a la PR, sería conveniente homogeneizar a como se hace con otras clases y adoptar un patrón de controladores para los componentes de plataforma. Es decir, al igual que tenemos un
y los métodos Con respecto a El soporte de dataframes en el método de (A continuación habrá una sugerencia de renaming de algunas cosas, pero hasta aquí me refiero a los nombres antiguos, para no liar). Luego, algunas consideraciones adicionales:
|
Hola, respecto a esto:
Estamos de acuerdo en incorporar ese mecanismo de timeout/try y vemos adecuado que se aborde posteriormente, como deuda técnica. Corregimos el resto de temas que nos indicáis y actualizamos el PR. |
Perfecto. Creado issue al respecto #72 y queda fuera del scope de la PR #70 |
…ks a tipos de excepciones.
python-lib/tc_etl_lib/README.md
Outdated
@@ -112,6 +112,10 @@ entities = cbm.get_entities_page(subservice='/energia', auth=auth, type='myType' | |||
|
|||
# have a look to the retrieved entities | |||
print (json.dumps(entities)) | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Creo que sería mejor dejar los ejemplos que ya hay como están y usar los dos nuevos fragmentos para generar un ejemplo separado independiente.
python-lib/tc_etl_lib/README.md
Outdated
- :param obligatorio `sensor_id`: El ID del sensor. | ||
- :param obligatorio `api_key`: La API key correspondiente al sensor. | ||
- :param obligatorio `endpoint`: La URL del servicio al que se le quiere enviar los datos. | ||
- :param opcional `sleep_send_batch`: Es el tiempo de espera entre cada envío de datos en segundos. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Siendo un parámetro opcional, indicar el default cuando no se especifica nada.
- :param obligatorio: `data`: Datos a enviar. Puede ser una lista de diccionarios o un DataFrame. | ||
- :raises SendBatchError: Se levanta cuando se produce una excepción dentro de `send_http`. Atrapa la excepción original y se guarda y se imprime el índice donde se produjo el error. | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Incluir en el changelog (justo por encima de la marca de versión 0.9.0) un par de entradas que describan los cambios incluidos en esta PR. Por ejemplo:
- Add: new class
iotaManager
to deal with IOTAgent interactions, with methods send_http and send_batch_http
python-lib/tc_etl_lib/README.md
Outdated
0.10.0 (November 27th, 2023) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Los cierres de versión los hacemos normalmente independientemente a la funcionalidad (por si entra alguna cosa más antes de cerrar versión... en este caso tal vez no, pero por procedimiento lo hacemos así).
0.10.0 (November 27th, 2023) |
Por tanto, por favor eliminar estas 2 lineas (como marca el suggestion) en esta PR. Con aceptar el suggestion valdría.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
¡Gracias por la excelente contribución! :)
Revisando la clase iotaManager, y sus métodos asociados, no es posible hacer un envío múltiple para distintos IDs. Esto sería útil para no tener que construir un objeto para cada uno de los IDs a enviar (si hay que actualizar múltiples dispositivos al final de una ETL). Sería interesante la clase dispusiera de un método (i.e: En cualquier caso el apikey podría ser estático (normalmente no va a cambiar el apikey por ETL) |
Edit (fgalan): issue #55
Se creó la clase
IoT
capaz de enviar datos al agente IoT. Tiene dos métodos:send_json
: envía datos en formato JSON.send_batch
: envía un conjunto de diccionarios. Recibe un tiempo de espera entre cada envío para evitar que el agente se sature. Es capaz de recibir unDataFrame
. La función se encarga de convertir cada fila en un diccionario y luego los envía uno por uno.Se pueden encontrar más detalles de las funciones en los archivos
best_practices.md
yREADME.md
Se movió la implementacion de
FetchError
a un archivo independienteexceptions.py
para centralizar el manejo de excepciones generales.Para asegurar la robustez del código se añadieron pruebas unitarias.
Se agregó la librería
pandas
para el manejo deDataFrames
. Debe ejecutarsepip install -r requirements.txt
para actualizar las dependencias.