/concurrent_webservice

Fetch data from the OpenWeatherMap API concurrently, limiting requests and using a cache.

Primary LanguageElixir

Concurrent Weather Queries

Consulta el clima de las ciudades de origen y destino de tickets de aeropuertos, utilizando la API de OpenWeatherMap. Realiza consultas concurrentemente, limitando las solicitudes a la API y utilizando una caché.

Instalación y ejecución (Docker)

Recomendamos utilizar Docker para instalar el proyecto, o el manejador de versiones asdf. No obstante, también es posible realizar la instalación manual, utilizando los repositorios oficiales de cada sistema operativo, aunque esto es propenso a incompatibilidades.

Docker

Es posible utilizar Docker para simplificar la instalación de Erlang y Elixir.
Para esto, proveemos el archivo Dockerfile.
Para instalar Docker, recomendamos seguir las guías oficiales. Una vez teniendo Docker instalado, podemos ejecutar los siguientes comandos:

# Construye el contenedor y compila el proyecto.
docker build -t webservice .

# Ejecuta el proyecto
docker run webservice

Esto va a ejecutar el proyecto, utilizando los archivos dataset1.csv y dataset2.csv, que se encuentran en la carpeta priv.

Instalación y ejecución (asdf)

El programa fue desarrollado y testeado en Elixir 1.10.4 (OTP 23.0.4).

asdf

Recomendamos utilizar asdf para la instalación y para asegurar que no hay incompatibilidad de versiones. Instrucciones para instalar asdf.

Ubuntu

Instalar los pre-requisitos de erlang:

sudo apt-get -y install build-essential autoconf m4 libncurses5-dev libwxgtk3.0-gtk3-dev libgl1-mesa-dev libglu1-mesa-dev libpng-dev libssh-dev unixodbc-dev xsltproc fop libxml2-utils libncurses-dev openjdk-11-jdk

Instalación de erlang:

# Instrucciones en: https://github.com/asdf-vm/asdf-erlang
asdf plugin-add erlang https://github.com/asdf-vm/asdf-erlang.git
asdf install erlang 23.0.4
asdf global erlang 23.0.4

Instalación de elixir:

sudo apt-get install unzip
asdf plugin-add elixir https://github.com/asdf-vm/asdf-elixir.git
# Es necesario que concuerde con la versión OTP
asdf install elixir 1.10.4-otp-23
asdf global elixir 1.10.4-otp-23 

Para ver la versión instalada en el sistema se puede ejecutar el comando iex --version.

Otros sistemas operativos

Compilación

Primero es necesario instalar las dependencias del proyecto:

mix deps.get

Posteriormente, podemos compilar el proyecto utilizando el comando:

# Primero ejecutar:
mix compile
# Luego, ejecutar:
mix run_project

El primer comando compilará el proyecto, y el segundo comando ejecutará el proyecto.

Testing

Para correr las pruebas unitarias:

mix test

Ejecución

Tras haber compilado el proyecto, con las instrucciones de antes, se habrá generado el archivo ejecutable webservice. Este puede ejecutarse como cualquier programa de linux, únicamente llamándolo desde bash de la siguiente manera:

./webservice

Esto va a ejecutar el proyecto, utilizando los archivos dataset1.csv y dataset2.csv, que se encuentran en la carpeta priv.

Autores