Contient:
l'API REST publique pour GOV.UK Notify, que les équipes peuvent intégrer en utilisant nos clients
une API REST interne uniquement construite à l'aide de Flask pour gérer les services, les utilisateurs, les modèles, etc. (c'est de cela que parle l'application d'administration)
travailleurs asynchrones construits à l'aide de Celery pour mettre des éléments dans des files d'attente et les lire pour être traités, envoyés aux fournisseurs, mis à jour, etc.
Nous exécutons Python 3.11 à la fois localement et en production.
Suivez ces instructions sur les machines Mac M1.
Pour exécuter l'API, vous aurez besoin des informations d'identification AWS appropriées. Voir le Wiki pour plus de détails.
environment.sh
Création et modification d'un fichier environnement.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
Choses à changer :
Remplacez YOUR_OWN_PREFIX
par local_dev_<first name>
.
Exécutez ce qui suit dans le référentiel d'informations d'identification pour obtenir les clés API.
notify-pass credentials/firetext notify-pass credentials/mmg
Cette application nécessite Postgres pour s'exécuter.
Si vous utilisez notifications-local, la version correcte de Postgres sera automatiquement fournie par le fichier docker-compose.
Si vous exécutez cette application manuellement, vous devrez gérer Postgres vous-même. Installez Postgres.app. Vérifiez le fichier docker-compose ci-dessus pour trouver la bonne version de Postgres à utiliser.
Lorsque nos tests unitaires sont exécutés dans Concourse, Postgres est basé dans le conteneur via l'étape concourse_tests de docker/Dockerfile.
Pour activer Redis, vous devrez l'installer localement. Sur un Mac, vous pouvez faire :
# assuming you use Homebrew brew install redis brew services start redis
Pour utiliser la mise en cache Redis, vous devez l'activer avec une variable d'environnement :
export REDIS_ENABLED=1
Nous utilisons le pré-commit pour garantir que le code validé répond aux normes de base en matière de formatage et apporterons des correctifs de base pour vous faire gagner du temps et éviter les ennuis.
Installez le pré-commit à l'échelle du système avec, par exemple, brew install pre-commit
. Ensuite, installez les hooks dans ce référentiel avec 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
Nous avons eu des problèmes pour exécuter Celery localement à cause de l'une de ses dépendances : pycurl. En raison de la complexité du problème, nous prenons également en charge l'exécution de Celery via 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
Les tâches sont exécutées via la commande flask
- exécutez flask --help
pour plus d'informations. Il y a deux sections dont nous devons nous soucier : flask db
contient les commandes de migration de l'alambic et flask command
contient toutes nos commandes personnalisées. Par exemple, pour purger toutes les données de tests fonctionnels générées dynamiquement, procédez comme suit :
Localement
flask command purge_functional_test_data -u <functional tests user name prefix>
Pour exécuter dans ecs, vous pouvez utiliser le 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>
Toutes les commandes et options de commande de Flask ont une commande --help si vous avez besoin de plus d'informations.
Écriture d'API publiques
Mise à jour des dépendances