Coder Social home page Coder Social logo

arturoemmanueltoledoaguado / apitext-respaldo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from thunderger23/apitext

0.0 0.0 1.0 16.17 MB

Respaldo; usar la variable de entorno dentro de railway 'MONGO_CLI' (db.py)

License: MIT License

Python 82.86% Dockerfile 17.14%

apitext-respaldo's Introduction

APIText de Athena

Intro

Código para control y monitoreo de temperaturas en sistema ECMO para corazón
Índice
  1. Comenzando 🚀
  2. Pre-Requisitos 📋
  3. Instalación 🔧
  4. Pruebas 🔩
  5. Diagramas 📚
  6. Despliegue 📦
  7. Construido con
  8. Versionado 📌
  9. Wiki 📖
  10. Autores 🖋
  11. Licencia 📄
  12. Expresiones De Gratitud 🎁

(Inicio)

Comenzando 🚀

click para obtener el código de la API

(Inicio)

Pre-requisitos 📋

Conocimientos intermadios en bases de datos, servidores, microservicios y python. Además del manejo de entornos virtuales con las siguientes instalaciones

Requisitos Desarrollador 💻

Debe contar con el siguiente conjunto de herramientas instaladas

  • Python
  • Editor de texto/IDE
  • MongoDB
  • Postman

Con lo anterior en mente es importante mencionar que se recomienda la integración de un entorno virtual para el desarrollo de nuevas funcionalidades dentro de la API, ya que pudiera existir el caso en el que alguna instalación ajena dentro del equipo produzca inconvenientes con la integración de nuestro software.

Comandos a ejecutar en la terminal:

  > pip install virtualenv
  > python -m venv APImg
  > cd APImg/Scripts/activate
  > cd ../..
  > pip install Fastapi uvicorn pymongo

Requisitos Usuario 👨‍🦱

Se hace caso omiso de este apartado puesto que no debería haber intervención alguna por parte de usuarios finales o terceros ajenos al desarrollo del proyecto.

(Requisitos Desarrollador) (Requisitos Usuario) (Inicio)

Instalación 🔧

Con nuestro entorno virtual creado y en ejecución mencionado en el punto anterior podemos proceder a ejecutar nuestro proyecto con los siguientes comandos

Dentro de la carpeta principal de la API ejecutar:

  > uvicorn app:app

El comando anterior levantará nuestro servidor para comenzar a trabajar, sin embargo lo realizará con una configuración predeterminada y bastante deficiente para un constante desarrollo de nuevas funcionalidades e integraciones al sistema, por lo cual se recomienda utilizar la siguiente adición de parametros.

  > uvicorn app:app --reload

Haciendo que nuestro servidor se reinicie cada que detecte algún cambio dentro de nuestro código de ruteo. Adicional a esto es posible adicionar mayor cantidad de parametros como el host, port, entre otros.

  > uvicorn app:app --reload --host: <param> --port: <param>

(Inicio)

Pruebas 🔩

De manera adicional se incluiran archivos de la arquitectura y funcionamiento del sistema, así como un conjunto de datos que puede utilizar para realizar las pruebas pertinentes del sistema.

Pruebas Unitarias 👨‍💻

El uso de pruebas unitarias dentro del proyecto nos permite detectar errores dentro de cada funcionalidad del sistema, son de gran ayuda a la hora de intentar agregar una nueva funcionalidad así como ahorrar tiempo al momento de testear el sistema.

Primero es necesario crear un entorno virtual con el siguiente comando en una terminal CMD:

python -m venv "nombre del entorno virtual"

Una vez que nuestro entorno virtual este creado debemos ponerlo en marcha; primero entratemos hasta la carpeta Scripts

cd .\"nombre del entorno virtual"\Scripts

Ya dentro del directorio escribimos lo siguiente en la terminal

activate.bat

Para confirmar que el entorno virtual esta encendido debe aparecernos entre parentesis el nombre que le asignamos a nuestro entorno virtual seguido de la ruta como se muestra en este ejemplo

(nombre del entorno virtual) C:\Users\toled\Documents\APIText>

Como ya confirmamos que nuestro entorno virtual esta encendido procederemos a instalr las herramientas necesarias para poder usar la API (estas herramientas y sus versiones estan en el documento requirements.txt)

pip install -r requirements.txt

Pruebas de Integración 🔌

El uso de pruebas de integración dentro del proyecto nos da la ventaja de poder identificar de manera rápida las conexiones fallidas entre este y más microservicios que componen al software así como la integración al backend principal.

Para esta parte se hace uso de la herramienta de docker, la cual nos permite hacer un contenedor que almacene la API; para lograr esto se deben realizar las siguientes configuraciones

Primero se crea un documento llamado Dockerfile con la siguiente configuración:

FROM ubuntu

ENV DEBIAN_FRONTEND=noninteractive

WORKDIR /code

RUN apt-get update \
  && apt-get -y install tesseract-ocr \
  && apt-get install -y python3 python3-distutils python3-pip \
  && cd /usr/local/bin \
  && ln -s /usr/bin/python3 python \
  && pip3 --no-cache-dir install --upgrade pip \
  && rm -rf /var/lib/apt/lists/*

RUN apt update \
  && apt-get install ffmpeg libsm6 libxext6 -y

COPY ./requirements.txt /code/requirements.txt

RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

COPY ./ /code
 
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]

Despues un documento llamado docker-compose.yml con la siguiente configuración:

version: "3.9"
services:
  apidocker:
    build: ./
    ports:
      - "8000:8000"
    environment:
      - TESSDATA_PREFIX=/code   

Y ahora se deben ejecutar los siguientes comandos en la terminal

docker compose up

Una vez creado el contenedor podra acceder a la siguiente direccion local en su navegador

http://localhost:8000/docs#/default/testing_test_get

(Pruebas Software) (Pruebas Hardware) (Inicio)

Diagramas 📚

A continuación se muestran los diagramas de funcionamiento general de la API

(Inicio)

Despliegue 📦

El despliegue se realiza de manera automatico con railway.

Primero nos dirigimos a la siguiente direccion https://railway.app/dashboard

  • Nota.- Es necesario contar con una cuenta de Railway

Hacemos click en "New Project"

1

Click en ""Deploy from GitHub repo"

2

Type "dock[[enter]]"

Click en "Add variables"

3

Click en "Add"

4

Click en "New Variable"

5

Click en el campo "Value"

6

Oprima [[ctrl]]+[[V]]

Click en "Add"

7

Oprima este icono

8

Oprima este boton

9

Oprima aqui

10

Click en "Settings"

11

Click en "Generate Domain"

12

Click en "View Logs"

13

Click en este icono

14

Click en "testdocker-production.up.railway.app"

15

Click en "Testing"

16

Click en "Try it out"

17

Click en "Execute"

18

(Inicio)

Construcción🛠️

El diseño de esta API se realizo en base al siguiente conjunto de tecnologias.

  • Anyio ➡ Librería de redes y concurrencia asíncrona que funciona sobre asyncio o trio
  • Click ➡ Paquete de Python para crear hermosas interfaces de línea de comandos de manera componible con tan poco código como sea necesario
  • Colorama ➡ Hace que las secuencias de caracteres de escape ANSI (para producir texto de terminal coloreado y posicionamiento del cursor) funcionen bajo MS Windows
  • FastAPI ➡ Desarrollo del Servidor
  • H11 ➡ Conjunto de herramientas para la construcción de programas que hablan HTTP; h11 hace mucho más fácil implementar algo como requests o twistedweb
  • Idna ➡ Soporte para el protocolo de Nombres de Dominio Internacionalizados en Aplicaciones (IDNA)
  • Pydantic ➡ Validación de datos y gestión de configuraciones utilizando sugerencias de tipo de Python
  • Pymongo ➡ Distribución de Python que contiene herramientas para trabajar con MongoDB
  • Python 3.10.6 ➡ Lenguaje utilizado
  • Sniffio ➡ Pequeño paquete cuyo único propósito es permitirte detectar bajo qué biblioteca asíncrona se está ejecutando tu código
  • Starlette ➡ Framework/toolkit ASGI ligero, ideal para construir servicios web asíncronos en Python
  • Typing_extensions ➡ Permitir la experimentación con nuevos PEPs del sistema de tipos antes de que sean aceptados y añadidos al módulo de tipado ?
  • Uvicorn ➡ Manejo de peticiones HTTP

(Inicio)

Contribuyendo 🖇️

Por favor lee el CONTRIBUTING.md para detalles de nuestro código de conducta, y el proceso para enviarnos pull requests.

(Inicio)

Wiki 📖

Puedes encontrar mucho más de cómo utilizar este proyecto en nuestra Wiki.

(Inicio)

Versionado 📌

Usamos SemVer para el versionado. Para todas las versiones disponibles, mira los tags en este repositorio.

(Inicio)

Autores 🖋

(Inicio)

Licencia 📄

Este proyecto está bajo la Licencia "MIT" - mira el archivo LICENSE para detalles.

(Inicio)

Expresiones de Gratitud 🎁

ThunderGer

  • Algun agradecimiento quer agregare despues
  • R2D2

  • A mis compañeros por brindarme la oportunidad de participar en este proyecto
  • ItzeGar

  • Algun agradecimiento quer agregare despues
  • (Inicio)

    apitext-respaldo's People

    Contributors

    arturoemmanueltoledoaguado avatar thunderger23 avatar

    Forkers

    itzegar

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.