Code Monkey home page Code Monkey logo

docxtemplate_python's Introduction

About

Este proyecto usa la libreria python-docx-template para manipular archivos de word como plantillas de jija2.

Colocando una serie de variables, condiciones y bucles en nuestro documento de word podemos renderizar documentos con los datos que deseemos.

Para probar esta libreria se estara usando un framework de python para la creacion de APIs llamado fastapi y para el loadtest se estara usando k6.

Setup

Instalacion de python

Debes tener python y pip descargado y en el path. Pueden instalarlo desde estos enlaces:

# Comprobar la instalacion
python -v
pip -v

Instalacion de k6 (para el load test)

Debes tener instalado k6 en tu pc.

# Comprobar la instalacion
k6 help

Run

Una vez instalado, se deben ejecutar los siguientes comandos en la carpeta raiz del proyecto:

# Instalar los paquetes necesarios
pip install -r requirements.txt

# Lanzar la aplicacion en el localhost 
uvicorn main:app --port 8000 --workers 4

En el flag --workers indicamos la cantidad de hilos que deseamos usar. Si deseas hacer un test usando mas hilos, puedes colocar la cantidad maxima que posea tu computador.

El swagger se encuentra en la ruta http://localhost:8000/docs. En la ruta /compose se debe colocar el doc_id y la data en el body. Ambos se encuentran en el archivo demo.json.

Una vez que se ejecuta el metodo, el documento de word generado se va a colocar en la carpeta /out del proyecto.

Load test

Para ejecutar el load test debes correr el siguiente comando:

k6 run ./test.js

En el archivo demo.json se encuentra la data que sera usada para generar cada archivo. Solo se tiene que modificar las constantes doc_id y data del archivo test.js

// Esta info se encuentra en el archivo demo.json
const doc_id = 'DOC1';
const data = {
    "var": "Hola distinguido",
    "items": [
        { "name": "Gustavo", "lastname": "Sanchez" },
        { "name": "Elena", "lastname": "Perez" },
        { "name": "Carlos", "lastname": "Amancio" }
    ]
};

Puedes modificar el tipo de test a utilizar entre las opciones preestablecidas en el archivo de test.js o creando una personalizada.

Los test estan configurados para durar solo 1 minuto y solo es ejecutada la opcion que selecciones.

const simpleTestOptions = {
    ...
};

const loadTestOptions = {
    ...
};

const stressTestOptions = {
    ...
};

// Puede escoger entre las tres opciones mas arriba o crear la suya https://k6.io/docs/test-types/load-test-types/
export const options = simpleTestOptions;

docxtemplate_python's People

Contributors

elmergonz avatar

Watchers

 avatar

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.