A continuación se detallan los pasos a seguir para levantar una versión local de la aplicación, apuntado a futuros desarrolladores de la misma. Este documento asume un entorno Linux para el desarrollo, y fue probado bajo Ubuntu 16.04.
- Python 3.6.x
- Virtualenv
- Docker
- Docker compose
Es recomendable instalar las dependencias de la aplicación en un entorno virtual para evitar conflictos con otras aplicaciones de versionado de las librerías usadas. Este ejemplo instala un entorno virtual de Python 2.7.6 con el nombre stiempo-api
, y todas las dependencias de la aplicación.
pyenv virtualenv 3.6.6 stiempo-api
pyenv activate stiempo-api
pip install -r requirements/local.txt
Algunas configuraciones locales (como variables de entorno, o la base de datos usada) pueden llegar a diferir de la versión productiva, y deben ser seteadas manualmente. Para ello se provee una configuración de ejemplo, que puede ser usada como base.
cp conf/settings/local_example.py conf/settings/local.py
cp conf/settings/.env.default_local conf/settings/.env
A su vez, se debe informar a Django cual es el módulo de configuración a leer. Este módulo debe ser el mismo que fue copiado en el paso anterior (conf/settings/local.py
en el ejemplo). Esto se hace seteando la variable de entorno DJANGO_SETTINGS_MODULE
, lo cual se puede hacer persistente entre sesiones de terminal escribiéndolo en .bashrc
(o similar, dependiendo de la terminal utilizada):
export DJANGO_SETTINGS_MODULE=conf.settings.local
Los servicios (PostgreSQL, Elasticsearch, Redis) pueden ser levantados usando Docker y Docker Compose:
docker-compose pull
docker-compose up -d
Correr las migraciones de las base de datos:
python manage.py migrate
Por defecto usando la configuración local, todas las tareas asincrónicas se corren de manera sincrónica. Si se desea testear la integración con rq de manera completa, configurar las colas para ser asincrónicas cambiando el código
for queue in RQ_QUEUES.values():
queue['ASYNC'] = False
por
for queue in RQ_QUEUES.values():
queue['ASYNC'] = True
Luego se pueden correr los workers para las colas deseadas con el siguiente comando. Notar que el comando bloqueará la terminal. Los nombres de las colas se encuentran bajo la variable RQ_QUEUE_NAMES
en el archivo conf/settings/base.py
python manage.py rqworker <queues>
Este comando levanta la aplicación.
python manage.py runserver
Si está todo en orden se podrá leer algún mensaje como el siguiente:
Django version 1.11.6, using settings 'conf.settings.local'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Correr scripts/tests.sh
desde el directorio raíz. También se proveen scripts que chequean estilos (scripts/pycodestyle.sh
) y pýlint
(scripts/pylint.sh
)