Scrapea noticias para alimentar el feed principal de la app de noticias sin filtros.
- Python 3.8 o superior.
- Instalación de docker
- Clonar este repo.
- Crear y activar un virtual environment.
- instalar dependencias básicas con
pip install -r requirements.txt
, lo que instalará poetry - Con
poetry
instalado, correrpoetry install
en la carpeta root del proyecto.
En caso de que solo se deseen utilizar los servicios de django y postgres, es posible instalar el proyecto localmente. Para esto usamos los siguientes pasos:
- Configurar la base de datos:
a. Logear a postgres usandosudo -iu postgres psql
b. correr los siguientes comandos:
CREATE DATABASE noticias_sin_filtro_dev;
CREATE USER vsf;
GRANT ALL PRIVILEGES ON DATABASE noticias_sin_filtro_dev TO vsf;
grant all privileges on databaSE noticias_sin_filtro_dev to vsf;
\q
- Crear migraciones con:
python manage.py makemigrations python manage.py migrate
- Crear super usuario con
python manage.py createsuperuser
y seguir los pasos para crear un super ususario con un nombre y contraseña de tu elección.
Existen 3 formas de correr el proyecto dependiendo de la cantidad de features activas que se desean tener en simultáneo.
- En el host local: Se utiliza la base de datos local y se ejecutan operaciones regulares de django. Se puede ejecutar
python manage.py runserver
para activar el servidor. Conveniente en casos donde queramos iterar localmente haciendo muchos cambios y sin probar servicios como los procesos asíncronos.- Para esto también es conveniente activar el servidor de scraping en caso de que necesitamos probar el scraping, esto lo podemos hacer:
a. Abrimos una nueva terminal en la carpeta raíz del proyecto, activando el virtual environment donde estamos trabajando.
b. Cambia la carpetavsf_crawler
c. Corremos el comandoscrapyd
. De esta forma, el servidor de scraping estará activo y las solicitudes que requieran el servicio de scraping funcionarán correctamente.
- Para esto también es conveniente activar el servidor de scraping en caso de que necesitamos probar el scraping, esto lo podemos hacer:
- Docker container de prueba: Se utiliza la base de batos transitoria del servicio de bases de datos (postgres) que corre en docker, y tiene activo el servicio de scraping. Se puede usar ejecutando el script
run.sh
en la carpeta raíz del proyecto. - Docker container de producción: Se utiliza la base de datos persistente del servicio de base de datos de postgres que corre en el servidor. También soporta el servicio de tareas asíncronas y de nginx. Se puede ejecutar usando el script
run_prod.sh
Posiblemente necesites tener correctamente configurado los archivos environment correspondientes para cada estilo de ejecución:
.env.dev
: Para el docker de prueba.env.prod
: Para el docker de producción.env.prod.celery
: para el docker de producción, y para la configuración de celery.env.prod.db
: para el docker de producción, y para la configuración de postgresnoticias_sin_filtro_server/.env
: para la ejecución del proyecto localmente