Development - Taller-2/app-server GitHub Wiki
Guía de desarrollo
pyenv
Ver pyenv
.
Mac: Usar Homebrew
Linux:
Instalar dependencias (Debian, Ubuntu):
apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev
Instalar pyenv:
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
Entorno virtual
Instalar Python 3.6.6
pyenv install 3.6.6
Configurar un entorno virtual para el proyecto:
pyenv virtualenv 3.6.6 taller2
Crear un archivo .python-version
en el root del directorio del proyecto con contenidos "taller2
" para que el entorno se active automáticamente.
Levantar la aplicación
Instalar dependencias: pip install -r requirements.txt
Levantar la aplicación: sh scripts/run.sh
Con gunicorn: export DB=mongodb://localhost:27017/myDatabase && gunicorn -w 4 index:app
Testing
Flake8 (validador de PEP8 + extras): sh scripts/flake8.sh
Pylint: sh scripts/pylint.sh
Tests: sh scripts/tests.sh
Levantar mongoDB
Instalarlo en la máquina, levantarlo ejecutando mongod
en una terminal.
Luego levantar el server, y probar. Por ejemplo, en este caso se creó un record (POST) para luego buscarlo (GET).
Endpoint /user
de prueba basado en este tutorial.
dylan@macOS: ~ $ curl --header "Content-Type: application/json" --request POST --data '{"name":"xyz","email":"xyz"}' http://localhost:5000/user
{
"message": "User created successfully!",
"ok": true
}
dylan@macOS: ~ $ curl --request GET http://localhost:5000/user?name=xyz
{
"_id": "5b860a05a063c41231e517b2",
"email": "xyz",
"name": "xyz"
}
Levantar docker con mongoDB
Primero escribimos en una terminal situada en la raiz del repositorio lo siguiente:
$ sudo docker-compose up --build
y en otra terminal situada en la raiz del repositorio escribimos lo siguiente:
$ curl --header "Content-Type: application/json" --request POST --data '{"name":"xyz","email":"xyz"}' http://localhost:4000/user
Salida:
{
"message": "User created successfully!",
"ok": true
}
$ curl --request GET http://localhost:4000/user?name=xyz
Salida:
{
"_id": "5b860a05a063c41231e517b2",
"email": "xyz",
"name": "xyz"
}
Criterio de cálculo de user score
Publicar incrementa el score en 1, comprar en 5, vender en 10.