Closed Fominayasg closed 3 years ago
Hola Sonia! 🙋🏻♂️
Te coy contando:
El código 👩💻:
Has definido:
app = Flask("LIDLT")
cuando definimos la app de Flask, lo hacemos con "name". Lo que hace es llamarse a sí mismo; es algo interno de python, no es un "format" como tal. Te dejo este artículo que lo explica: https://blog.miguelgrinberg.com/post/why-do-we-pass-name-to-the-flask-class
En general: No has hecho los docstrings. Acostúmbrate a poner docstring diciendo qué hace cada función y qué recibe y qué devuelve; sobre todo por hacerte un favor a tu yo del futuro. Aquí la manita no tiene que ir relajá.
También súper buena modularización de las funciones: en api.py las funciones mínimas con los decoradores que llamen a funciones definidas en otros sitios, como helpers 👏
Respecto a la parametrización:
@app.route("/mensajes")
def mensajes():
data = read_data({},"Frases", project = {"_id":0,"Mensaje":1})
return json_util.dumps(data)
@app.route("/participantes")
def participantes():
data = read_data({},"Participantes", project = {"_id":0,"Nombre":1})
return json_util.dumps(data)
si las dos funciones lo que hacen es comprobar/traer cosas y depende de la colección de dónde vienen, puedes parametrizar la función para que en función de argumento haga una cosa o haga otra. Al final tener funciones muy parecidas puede ser señal de que hace falta refactorizar.
Otra cosa que puedes hacer además del try/except es crear funciones sencillas que comprueben y que las importes y llames dentro de otras.
Como decíamos ayer, puedes incluir el sentiment analysis dentro de un endpoint. Es cuestión de modularizar las funciones y poner un decorador más. Puedes incluso hacer que, en función de lo que pidas, devuelvas una gráfica. También puedes hacerlo por grupos, por usuarios, por usuarios en el tiempo (antes o después de un evento), por palabras más usadas, etc.
Para el jupyter, como decíamos ayer a Ana, sólo hace falta que importes requests. Al final el jupyter lo único que va a hacer es colocar la dirección en la barra de navegación de igual forma que lo harías tú. Y esa dirección lo que hace es llamar a la función del api.py que tiene debajo, que a su vez llama a la de mongo connection etc. Pero ese jupyter no hace conexión con la base de datos, sino que llama a la primera función que desencadena el resto.
Enhorabuena Sonia! Has creado una base de datos, has creado enpdpoints de post, de get y no te queda casi nada para hacer sentiment analysis. A este proyecto siempre se le pueden añadir más cosas: hacer más visualización, meter más datos, puedes deployearlo (para eso necesitas pasar la base de datos de Mongo Compass a Mongo Atlas), pero el proyecto está genial. En unas semanas habéis conseguido nutrir una base de datos a través de una aplicación vuestra y habéis sacado insights. Y esto es sólo el principio, esto lo puedes escalar de muchas formas.
A tope Sonia!! 💪 🚀
https://github.com/Fominayasg/api-sentiment-project