Contiene:
la API REST pública para GOV.UK Notify, con la que los equipos pueden integrarse utilizando nuestros clientes
una API REST solo interna creada con Flask para administrar servicios, usuarios, plantillas, etc. (esto es con lo que habla la aplicación de administración)
trabajadores asincrónicos creados con Celery para poner cosas en colas y leerlas para procesarlas, enviarlas a proveedores, actualizarlas, etc.
Ejecutamos Python 3.11 tanto localmente como en producción.
Siga estas instrucciones en máquinas Mac M1.
Para ejecutar la API, necesitará las credenciales de AWS adecuadas. Consulte la Wiki para obtener más detalles.
environment.sh
Crear y editar un archivo Environment.sh.
echo " export NOTIFY_ENVIRONMENT='development' export MMG_API_KEY='MMG_API_KEY' export FIRETEXT_API_KEY='FIRETEXT_ACTUAL_KEY' export NOTIFICATION_QUEUE_PREFIX='YOUR_OWN_PREFIX' export FLASK_APP=application.py export FLASK_DEBUG=1 export WERKZEUG_DEBUG_PIN=off "> environment.sh
Cosas para cambiar:
Reemplace YOUR_OWN_PREFIX
con local_dev_<first name>
.
Ejecute lo siguiente en el repositorio de credenciales para obtener las claves API.
notify-pass credentials/firetext notify-pass credentials/mmg
Esta aplicación requiere que Postgres se ejecute.
Si está utilizando notificaciones locales, el archivo docker-compose proporcionará automáticamente la versión correcta de Postgres.
Si ejecuta esta aplicación manualmente, deberá administrar Postgres usted mismo. Instale Postgres.app. Consulte el archivo docker-compose anterior para encontrar la versión correcta de Postgres que debe usar.
Cuando nuestras pruebas unitarias se ejecutan en Concourse, Postgres se basa en el contenedor a través del paso concourse_tests de Docker/Dockerfile.
Para activar Redis, deberá instalarlo localmente. En una Mac puedes hacer:
# assuming you use Homebrew brew install redis brew services start redis
Para usar el almacenamiento en caché de Redis, debe activarlo con una variable de entorno:
export REDIS_ENABLED=1
Utilizamos la confirmación previa para garantizar que el código confirmado cumpla con los estándares básicos de formato y realizaremos correcciones básicas para que usted ahorre tiempo y molestias.
Instale el compromiso previo en todo el sistema con, por ejemplo, brew install pre-commit
. Luego, instale los ganchos en este repositorio con pre-commit install --install-hooks
.
# install dependencies, etc. make bootstrap # run the web app make run-flask # run the background tasks make run-celery # run scheduled tasks (optional) make run-celery-beat
Hemos tenido problemas al ejecutar Celery localmente debido a una de sus dependencias: pycurl. Debido a la complejidad del problema, también admitimos la ejecución de Celery a través de Docker:
# install dependencies, etc. make bootstrap-with-docker # run the background tasks make run-celery-with-docker # run scheduled tasks make run-celery-beat-with-docker
# install dependencies, etc. make bootstrap make test
Las tareas se ejecutan mediante el comando flask
: ejecute flask --help
para obtener más información. Hay dos secciones de las que debemos preocuparnos: flask db
contiene comandos de migración de alambique y flask command
contiene todos nuestros comandos personalizados. Por ejemplo, para purgar todos los datos de prueba funcionales generados dinámicamente, haga lo siguiente:
En la zona
flask command purge_functional_test_data -u <functional tests user name prefix>
Para ejecutar en ecs, puede usar el script ecs-exec.sh
./scripts/ecs-exec/ecs-exec.sh <select notify-api> flask command purge_functional_test_data -u <functional tests user name prefix>
Todos los comandos de flask y las opciones de comando tienen un comando --help si necesita más información.
Escribir API públicas
Actualizando dependencias