

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Visualice los resultados AI/ML del modelo con Flask y AWS Elastic Beanstalk
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk"></a>

*Chris Caudill y Durga Sury, Amazon Web Services*

## Resumen
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-summary"></a>

La visualización de los resultados de los servicios de inteligencia artificial y machine learning (IA/ML) suele requerir llamadas complejas a la API, que los desarrolladores e ingenieros deben personalizar. Esto puede ser un inconveniente si sus analistas desean explorar rápidamente un nuevo conjunto de datos.

Para mejorar la accesibilidad de sus servicios y ofrecer una forma de análisis de datos más interactiva puede utilizar una interfaz de usuario (UI) basada en la web que permite a los usuarios cargar sus propios datos y visualizar los resultados del modelo en un panel de control.

Este patrón utiliza [Flask](https://flask.palletsprojects.com/en/2.0.x/) y [Plotly](https://plotly.com/) para integrar Amazon Comprehend en una aplicación web personalizada y visualizar opiniones y entidades a partir de los datos proporcionados por los usuarios. El patrón también indica los pasos para implementar una aplicación mediante AWS Elastic Beanstalk. Puede adaptar la aplicación mediante los servicios de [IA de Amazon Web Services (AWS)](https://aws.amazon.com/machine-learning/ai-services/) o con un modelo entrenado personalizado alojado en un punto final (por ejemplo, un [ SageMaker punto final de Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html)).

## Requisitos previos y limitaciones
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-prereqs"></a>

**Requisitos previos**
+ Una cuenta de AWS activa. 
+ Interfaz de la línea de comandos de AWS (AWS CLI), instalada y configurada en su equipo local. Para obtener más información, consulte la sección [Aspectos básicos de configuración](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) en la documentación de la CLI de AWS. También puede usar un entorno de desarrollo integrado (IDE) de AWS Cloud9; para obtener más información, consulte el [Python tutorial for AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/sample-python.html) y [Previewing running applications in the AWS Cloud9 IDE](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html) en la documentación de AWS Cloud9.

  **Aviso**: ya no AWS Cloud9 está disponible para nuevos clientes. Los clientes actuales de AWS Cloud9 pueden seguir utilizando el servicio con normalidad. [Más información](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)
+ Comprensión de la estructura de aplicaciones web de Flask. Para obtener más información acerca de Flask, consulte [Quickstart](https://flask.palletsprojects.com/en/1.1.x/quickstart) en la documentación de Flask.
+ Python 3.6 o una versión posterior, instalada y configurada. Puede instalar Python siguiendo las instrucciones de [Configuración del entorno de desarrollo de Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-development-environment.html) en la documentación de AWS Elastic Beanstalk.
+ Interfaz de la línea de comandos de Elastic Beanstalk (CLI de EB), instalada y configurada. Para obtener más información, consulte [Instalación de la CLI de EB](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install.html) y [Configuración de la CLI de EB](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-configuration.html) en la documentación de AWS Elastic Beanstalk.

**Limitaciones**
+ La aplicación Flask de este patrón está diseñada para funcionar con archivos .csv que utilizan una sola columna de texto y están limitados a 200 filas. El código de la aplicación se puede adaptar para gestionar otros tipos de archivos y volúmenes de datos.
+ La aplicación no tiene en cuenta la retención de datos y continúa agregando los archivos de usuario cargados hasta que se eliminan manualmente. Puede integrar la aplicación con Amazon Simple Storage Service (Amazon S3) para el almacenamiento persistente de objetos o utilizar una base de datos como Amazon DynamoDB para el almacenamiento de valores clave sin servidor.
+ La aplicación solo tiene en cuenta documentos en inglés. Sin embargo, puede utilizar Amazon Comprehend para detectar el idioma principal de un documento. Para obtener más información acerca de los idiomas admitidos para cada acción, consulte la [Referencia de la API](https://docs.aws.amazon.com/comprehend/latest/dg/API_Reference.html) en la documentación de Amazon Comprehend.
+ En la sección *Información adicional* encontrará una lista de resolución de problemas con los errores más comunes y sus soluciones.

## Arquitectura
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-architecture"></a>

**Arquitectura de aplicaciones Flask**

Flask es una estructura ligera para desarrollar aplicaciones web en Python. Está diseñada para combinar el potente procesamiento de datos de Python con una interfaz de usuario web enriquecida. La aplicación Flask del patrón muestra cómo crear una aplicación web que permita a los usuarios cargar datos, enviar los datos a Amazon Comprehend para su inferencia y, a continuación, visualizar los resultados.   La aplicación tiene la estructura siguiente:
+ `static`— Contiene todos los archivos estáticos compatibles con la interfaz de usuario web (por ejemplo JavaScript, CSS e imágenes)
+ `templates` – Contiene todas las páginas HTML de la aplicación
+ `userData` – Almacena los datos cargados por el usuario
+ `application.py` – El archivo de la aplicación Flask
+ `comprehend_helper.py` – Funciones para realizar llamadas de API a Amazon Comprehend
+ `config.py` – Archivo de configuración de la aplicación
+ `requirements.txt` – Las dependencias de Python que requiere la aplicación

El script `application.py` contiene la funcionalidad principal de la aplicación web, que consta de cuatro rutas de Flask. En el diagrama siguiente se muestran estas rutas de Flask.

![\[Las cuatro rutas de Flask que componen la funcionalidad principal de la aplicación web.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/03d80cf1-ec97-43f7-adb5-2746a9ec70e6/images/9ca6bad1-26e2-4262-98d0-d54c172336bf.png)


 
+ `/` es la raíz de la aplicación y dirige a los usuarios a la página `upload.html` (almacenada en el directorio `templates`).
+ `/saveFile` es una ruta que se invoca después de que un usuario cargue un archivo. Esta ruta recibe una solicitud `POST` a través de un formulario HTML, que contiene el archivo cargado por el usuario. El archivo se guarda en el directorio `userData` y la ruta redirige a los usuarios a la ruta `/dashboard`.
+ `/dashboard` envía a los usuarios a la página `dashboard.html`. En el HTML de esta página, ejecuta el JavaScript código `static/js/core.js` que lee los datos de la `/data` ruta y, a continuación, crea visualizaciones para la página.
+ `/data` es una API de JSON que presenta los datos que se van a visualizar en el panel de control. Esta ruta lee los datos proporcionados por el usuario y utiliza las funciones en `comprehend_helper.py` para enviar los datos del usuario a Amazon Comprehend para el análisis de opiniones y el reconocimiento de entidades nombradas (NER). La respuesta de Amazon Comprehend se formatea y se devuelve como un objeto JSON.

**Arquitectura de implementación**

![\[Diagrama de arquitectura para usar Flask y Elastic AI/ML Beanstalk para visualizar los resultados del modelo.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/03d80cf1-ec97-43f7-adb5-2746a9ec70e6/images/d691bfd2-e2ec-4830-8bff-ffa1e3a95c4a.png)


[Consideraciones sobre el diseño](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts.design.html)

 Para más información sobre las consideraciones de diseño de las aplicaciones implementadas con Elastic Beanstalk en la nube de AWS, consulte la documentación de AWS Elastic Beanstalk.

**Pila de tecnología**
+ Amazon Comprehend 
+ Elastic Beanstalk 
+ Flask 

**Automatización y escala**

Las implementaciones de Elastic Beanstalk se configuran automáticamente con equilibradores de carga y grupos de escalado automático. Para obtener más opciones de configuración, consulte [Configuración de entornos de Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html) en la documentación de AWS Elastic Beanstalk.

## Tools (Herramientas)
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-tools"></a>
+ [Interfaz de la línea de comandos de AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html): es una herramienta unificada que proporciona una interfaz coherente para interactuar con todas las partes de AWS.
+ [Amazon Comprehend](https://docs.aws.amazon.com/comprehend/latest/dg/comprehend-general.html): utiliza el procesamiento de lenguaje natural (NLP) para extraer información sobre el contenido de los documentos, sin necesitar procesamiento especial.
+ [AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html): le permite implementar y administrar aplicaciones rápidamente en la nube de AWS sin tener que aprender acerca de la infraestructura que las ejecuta.
+ [Elastic Beanstalk CLI (EB CLI)](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3.html): es una interfaz de la línea de comandos de AWS Elastic Beanstalk que proporciona comandos interactivos que simplifican la creación, actualización y supervisión de entornos desde un repositorio local.
+ El marco de [Flask](https://flask.palletsprojects.com/en/2.0.x/) hace el procesamiento de datos y las llamadas a la API mediante Python y ofrece una visualización web interactiva con Plotly.

**Código**

El código de este patrón está disponible en los [resultados del AI/ML modelo de GitHub Visualize mediante Flask y el repositorio AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask).

## Epics
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-epics"></a>

### Configurar la aplicación Flask
<a name="set-up-the-flask-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clone el repositorio. GitHub  | Extraiga el código de la aplicación de los [resultados del AI/ML modelo de GitHub Visualize mediante Flask y el repositorio de AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) ejecutando el siguiente comando:`git clone git@github.com:aws-samples/aws-comprehend-elasticbeanstalk-for-flask.git`Asegúrese de configurar sus claves SSH con. GitHub | Desarrollador | 
| Instale los módulos de Python. | Una vez clonado el repositorio, se crea un nuevo directorio `aws-comprehend-elasticbeanstalk-for-flask` local. En ese directorio, el archivo `requirements.txt` contiene los módulos y las versiones de Python que ejecutan la aplicación. Utilice los comandos siguientes para instalar los módulos:`cd aws-comprehend-elasticbeanstalk-for-flask``pip install -r requirements.txt` | Python developer | 
| Pruebe la aplicación localmente. | Ejecute el siguiente comando para iniciar el servidor de Flask:`python application.py`Esto devuelve información sobre el servidor en ejecución. Debería poder acceder a la aplicación si abre un navegador y visita http://localhost:5000Si ejecuta la aplicación en un IDE de AWS Cloud9, debe reemplazar el comando `application.run()` del archivo `application.py` por la línea siguiente:`application.run(host=os.getenv('IP', '0.0.0.0'),port=int(os.getenv('PORT', 8080)))`Debe revertir este cambio antes de la implementación. | Python developer | 

### Implementar la aplicación en Elastic Beanstalk
<a name="deploy-the-application-to-elastic-beanstalk"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicie la aplicación Elastic Beanstalk. | Para lanzar el proyecto como una aplicación de Elastic Beanstalk, ejecute el comando siguiente desde el directorio raíz de la aplicación:`eb init -p python-3.6 comprehend_flask --region us-east-1`[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html)Ejecute el comando `eb init -i` para obtener más opciones de configuración de implementación. | Arquitecto, desarrollador | 
| Implemente el entorno de Elastic Beanstalk. | Ejecute el comando siguiente desde el directorio raíz de la aplicación: `eb create comprehend-flask-env``comprehend-flask-env` es el nombre del entorno de Elastic Beanstalk y se puede cambiar según las necesidades. El nombre solo puede contener letras, números y guiones. | Arquitecto, desarrollador | 
| Autorice su implementación para usar Amazon Comprehend. | Si bien es posible que su aplicación se haya implementado correctamente, debe proporcionar a su implementación acceso a Amazon Comprehend. `ComprehendFullAccess` es una política administrada de AWS que proporciona a la aplicación implementada los permisos para realizar llamadas de API a Amazon Comprehend.Adjunte la política `ComprehendFullAccess` a `aws-elasticbeanstalk-ec2-role` (esta función se crea automáticamente para las instancias de Amazon Elastic Compute Cloud (Amazon EC2) de la implementación) al ejecutar el comando siguiente:`aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ComprehendFullAccess --role-name aws-elasticbeanstalk-ec2-role``aws-elasticbeanstalk-ec2-role` se crea cuando se implementa la aplicación. Debe completar el proceso de implementación para poder adjuntar la política de AWS Identity and Access Management (IAM). | Desarrollador, arquitecto de seguridad | 
| Visite su aplicación implementada. | Una vez que la aplicación se haya implementado correctamente, puede visitarla mediante la ejecución del comando `eb open`.También puede ejecutar el comando `eb status` para recibir detalles sobre su implementación. La URL de la implementación aparece en `CNAME`. | Arquitecto, desarrollador | 

### (Opcional) Personalizar la aplicación según su modelo de ML
<a name="optional-customize-the-application-to-your-ml-model"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Autorice que Elastic Beanstalk acceda al nuevo modelo. | Asegúrese de que Elastic Beanstalk tenga los permisos de acceso necesarios para el nuevo modelo de punto de conexión. Por ejemplo, si utilizas un SageMaker punto de conexión de Amazon, tu implementación debe tener permiso para invocar el punto de conexión. Para obtener más información al respecto, consulta [InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html)la SageMaker documentación de Amazon. | Desarrollador, arquitecto de seguridad | 
| Envíe los datos del usuario a un nuevo modelo. | Para cambiar el modelo de ML subyacente en esta aplicación, debe cambiar los archivos siguientes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html) | Científico de datos | 
| Actualice las visualizaciones del panel de control. | Por lo general, la incorporación de un nuevo modelo de ML significa que las visualizaciones deben actualizarse para reflejar los nuevos resultados. Se han realizado estos cambios en los archivos siguientes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html) | Desarrollador web | 

### (Opcional) Implementar la aplicación actualizada
<a name="optional-deploy-the-updated-application"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Actualice el archivo de requisitos de su solicitud. | Antes de enviar los cambios a Elastic Beanstalk, actualice el archivo `requirements.txt` para que refleje los nuevos módulos de Python. Para ello, ejecute el siguiente comando en el directorio raíz de la aplicación:`pip freeze > requirements.txt` | Python developer | 
| Vuelva a implementar el entorno de Elastic Beanstalk. | Para asegurarse de que los cambios en la aplicación se reflejen en la implementación de Elastic Beanstalk, navegue hasta el directorio raíz de la aplicación y ejecute el comando siguiente:`eb deploy`Esto envía la versión más reciente del código de la aplicación a la implementación de Elastic Beanstalk existente. | Administrador de sistemas, arquitecto | 

## Recursos relacionados
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-resources"></a>
+ [Llame a un punto de conexión SageMaker modelo de Amazon mediante Amazon API Gateway y AWS Lambda](https://aws.amazon.com/blogs/machine-learning/call-an-amazon-sagemaker-model-endpoint-using-amazon-api-gateway-and-aws-lambda/)
+ [Implementación de una aplicación Flask en Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html)
+ [Referencia de los comandos de EB CLI](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-cmd-commands.html)
+ [Configuración del entorno de desarrollo de Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-development-environment.html)

## Información adicional
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-additional"></a>

**Lista de solución de problemas**

A continuación, se presentan seis errores comunes y sus soluciones.

***Error 1 * **

```
Unable to assume role "arn:aws:iam::xxxxxxxxxx:role/aws-elasticbeanstalk-ec2-role". Verify that the role exists and is configured correctly.
```

**Solución**: Si este error se produce al ejecutar `eb create`, cree una aplicación de muestra en la consola de Elastic Beanstalk para crear el perfil de instancia predeterminado. Para obtener más información al respecto, consulte [Creación de un entorno de Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.environments.html) en la documentación de AWS Elastic Beanstalk.

***Error 2***

```
Your WSGIPath refers to a file that does not exist.
```

**Solución:** Este error se produce en los registros de implementación porque Elastic Beanstalk espera que el código de Flask se denomine `application.py`. Si eligió un nombre diferente, ejecútelo `eb config` y edítelo WSGIPath como se muestra en el siguiente ejemplo de código:

```
aws:elasticbeanstalk:container:python:
     NumProcesses: '1'
     NumThreads: '15'
     StaticFiles: /static/=static/
     WSGIPath: application.py
```

Asegúrese de reemplazar `application.py` con el nombre de su archivo.

También puede aprovechar Gunicorn y un Procfile. Para obtener más información sobre este enfoque, consulte [Configuración del servidor WSGI con un Procfile](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-configuration-procfile.html) en la documentación de AWS Elastic Beanstalk.

***Error 3***

```
Target WSGI script '/opt/python/current/app/application.py' does not contain WSGI application 'application'.
```

**Solución:** Elastic Beanstalk espera que la variable que representa la aplicación Flask se denomine `application`. Asegúrese de que el archivo `application.py` utilice `application` como nombre de la variable:

```
application = Flask(__name__)
```

***Error 4***

```
The EB CLI cannot find your SSH key file for keyname
```

**Solución:** Utilice la EB CLI para especificar qué par de claves usar o para crear un par de claves para las instancias EC2 de la implementación. Para resolver el error, ejecute `eb init -i` y una de las opciones le solicitará lo siguiente:

```
Do you want to set up SSH for your instances?
```

Responda `Y` para crear un par de claves o especificar un par de claves existente.

***Error 5***

*He actualizado mi código y lo he vuelto a implementar, pero mi implementación no refleja los cambios.*

**Solución**: Si utiliza un repositorio de Git con su implementación, asegúrese de añadir y confirmar los cambios antes de volver a implementarlos.

***Error 6***

*Está previsualizando la aplicación Flask desde un IDE de AWS Cloud9 y se produce un error.*

**Solución:** Para obtener más información al respecto, consulte [Vista previa de las aplicaciones en ejecución en el IDE de AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html) en la documentación de AWS Cloud9.

 

 

**Uso de Amazon Comprehend para el procesamiento de lenguaje natural**

Al elegir Amazon Comprehend, puede detectar entidades personalizadas en documentos de texto individuales mediante la ejecución de análisis en tiempo real o trabajos por lotes asíncronos. Amazon Comprehend también le permite entrenar modelos personalizados de reconocimiento de entidades y clasificación de texto que se pueden utilizar en tiempo real mediante la creación de un punto de conexión.

Este patrón utiliza trabajos por lotes asíncronos para detectar opiniones y entidades en un archivo de entrada que contiene varios documentos. La aplicación de ejemplo que proporciona este patrón está diseñada para que los usuarios carguen un archivo .csv que contenga una sola columna con un documento de texto por fila. El `comprehend_helper.py` archivo del [ AI/ML modelo de GitHub Visualize genera resultados con Flask y el repositorio de AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) lee el archivo de entrada y lo envía a Amazon Comprehend para su procesamiento.

*BatchDetectEntities*

Amazon Comprehend inspecciona el texto de un lote de documentos en busca de entidades nombradas y devuelve la entidad detectada, la ubicación, el [tipo de entidad](https://docs.aws.amazon.com/comprehend/latest/dg/how-entities.html) y una puntuación que indica el nivel de confianza de Amazon Comprehend. Se puede enviar un máximo de 25 documentos en una llamada de API, y cada documento tiene un tamaño inferior a 5000 bytes. Puede filtrar los resultados para mostrar solo determinadas entidades en función del caso de uso. Así, por ejemplo, puede omitir el tipo de entidad `‘quantity’` y establecer una puntuación límite para la entidad detectada (por ejemplo, 0,75). Le recomendamos que explore los resultados para su caso de uso específico antes de elegir un valor umbral. Para obtener más información al respecto, consulte [BatchDetectEntities](https://docs.aws.amazon.com/comprehend/latest/dg/API_BatchDetectEntities.html)la documentación de Amazon Comprehend.

*BatchDetectSentiment*

Amazon Comprehend inspecciona un lote de documentos entrantes y devuelve la opinión predominante para cada documento (`POSITIVE`, `NEUTRAL`, `MIXED` o `NEGATIVE`). Se puede enviar un máximo de 25 documentos en una llamada de API, y cada documento tiene un tamaño inferior a 5000 bytes. Analizar la opinión es sencillo y se puede elegir aquella que tiene la puntuación más alta para que aparezca en los resultados finales. Para obtener más información al respecto, consulte [BatchDetectSentiment](https://docs.aws.amazon.com/comprehend/latest/dg/API_BatchDetectSentiment.html)la documentación de Amazon Comprehend.

 

 

**Manejo de la configuración de Flask**

Los servidores Flask utilizan una serie de [variables de configuración](https://flask.palletsprojects.com/en/1.1.x/config/) para controlar el funcionamiento del servidor. Estas variables pueden contener el resultado de la depuración, tokens de sesión u otros ajustes de la aplicación. También puede definir variables personalizadas a las que se puede acceder mientras la aplicación se está ejecutando. Existen varios enfoques para establecer las variables de configuración.

En este patrón, la configuración se define `config.py` y se hereda dentro de `application.py`.
+ 
**nota**  
`config.py` contiene las variables de configuración que se configuran al iniciar la aplicación. En esta aplicación, se define una variable `DEBUG` para indicar a la aplicación que ejecute el servidor en [modo de depuración](https://flask.palletsprojects.com/en/1.1.x/config/#DEBUG). El modo de depuración no debe utilizarse cuando se ejecuta una aplicación en un entorno de producción. `UPLOAD_FOLDER` es una variable personalizada que se define para hacer referencia a ella más adelante en la aplicación e indicar dónde deben almacenarse los datos de usuario cargados.
+ `application.py` inicia la aplicación Flask y hereda los ajustes de configuración definidos en `config.py`. Esto se lleva a cabo mediante el código siguiente:

```
application = Flask(__name__)
application.config.from_pyfile('config.py')
```