Skip to content

Api creada con python y base de datos redis. Responde al enunciado adjunto. Implementado en EC2 con docker, donde también se agregó gunicorn y nginx

Notifications You must be signed in to change notification settings

jssknn/mutantes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mutantes

Api creada con Python y base de datos Redis. Responde al enunciado adjunto nombrado como Mutantes.pdf.

Implementado en EC2 con docker, donde también se agregó gunicorn y nginx para resolver las peticiones.

Para realizar la implementación en docker se debe ejecutar el siguiente comando:

docker-compose up --build -d

Anteriomente asegurarse de tener copiados todos los archivos y directorios, además de estar situados en donde se encuentra el archivo docker-compose.yml.

Estructura de archivos

.
├── app 
│   ├── Dockerfile
│   ├── api.py
│   ├── dna_mutant.py
│   ├── dnadb.py
│   ├── requirements.txt
│   └── wsgi.py
├── nginx
│   ├── Dockerfile        
│   ├── nginx.conf  
│   └── project.conf
├── test
│   ├── htmlcov
│   │   └── coverage_files      
│   └── api_mutant_test.py 
└── docker-compose.yml

Diagrama

diagrama

Servicios

/mutant

Se realiza una solicitud POST ingresando como parámetro un adn para verificar y se obtiene una respuesta diferente según el resultado.

POST → /mutant
{
  "dna":["AAAAGA", "CAGTGC", "TTCTAT", "AGAAGG", "CCCCTA", "TCACTG"]
}
  • Si verifica que el adn pertenece a un mutante devuelve 200-OK y la siguiente respuesta:

    { "mutant":true }

  • Si verifica que el adn no pertenece a un mutante devuelve 403-Forbidden y la siguiente respuesta:

    { "mutant":false }

  • Si se produce una excepción por parámetros incorrectos devuelve 400-Bad Request y una respuesta como la siguiente:

    { "error":"Faltan ingresar parámetros" }

  • Si existe un error interno con el servicio devuelve 500-Internal server error y la siguiente respuesta:

    { "error":"Error interno en el servidor" }

/stats

Se realiza una solicitud GET sin ingresar parámetros y se obtiene como respuesta un json con los resultados de los análisis realizados hasta el momento.

GET → /stats 
  • Si el servicio funciona correctamente devuelve 200-OK y una respuesta como la siguiente:

    { "count_human_dna":10, "count_mutant_dna":2, "ratio":0.2 }

  • Si existe un error interno con el servicio devuelve 500-Internal server error y la siguiente respuesta:

    { "error":"Error interno en el servidor" }

Funcionamiento

postman

Algoritmo

Realiza la búsqueda de coincidencias de manera secuencial. Primero horizontalmente, luego verticalmente, después de forma oblicua tomando las diagonales que van desde la esquina superior izquierda hacia la inferior derecha y por último sobre las diagonales que van desde la esquina superior derecha hacia la inferior izquierda.

Todo esto lo hace buscando la secuencia de letras consecutivas en una lista de cadenas, en cada bloque está la posibilidad de salir si el acumulador de coincidencias es mayor a uno.

Coverage

El test de código se realizó mediante unittest y el reporte de cobertura con el módulo coverage de Python.

Dentro de la carpeta /test se encuentran los archivos generados.

diagrama

About

Api creada con python y base de datos redis. Responde al enunciado adjunto. Implementado en EC2 con docker, donde también se agregó gunicorn y nginx

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published