Enthält:
die öffentlich zugängliche REST-API für GOV.UK Notify, die Teams mithilfe unserer Clients integrieren können
eine rein interne REST-API, die mit Flask erstellt wurde, um Dienste, Benutzer, Vorlagen usw. zu verwalten (damit kommuniziert die Admin-App)
Asynchrone Worker, die mit Celery erstellt wurden, um Dinge in Warteschlangen zu stellen und sie auszulesen, damit sie verarbeitet, an Anbieter gesendet, aktualisiert usw. werden
Wir führen Python 3.11 sowohl lokal als auch in der Produktion aus.
Befolgen Sie diese Anweisungen auf Mac M1-Maschinen.
Zum Ausführen der API benötigen Sie entsprechende AWS-Anmeldeinformationen. Weitere Informationen finden Sie im Wiki.
environment.sh
Erstellen und Bearbeiten einer Datei „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
Zu ändernde Dinge:
Ersetzen Sie YOUR_OWN_PREFIX
durch local_dev_<first name>
.
Führen Sie im Anmeldeinformations-Repository Folgendes aus, um die API-Schlüssel abzurufen.
notify-pass credentials/firetext notify-pass credentials/mmg
Für die Ausführung dieser App ist Postgres erforderlich.
Wenn Sie „notifications-local“ verwenden, wird die richtige Postgres-Version automatisch von der Docker-Compose-Datei bereitgestellt.
Wenn Sie diese App manuell ausführen, müssen Sie Postgres selbst verwalten. Installieren Sie Postgres.app. Überprüfen Sie die Docker-Compose-Datei oben, um die richtige Postgres-Version zu finden.
Wenn unsere Unit-Tests in Concourse ausgeführt werden, wird Postgres über den concourse_tests-Schritt von Docker/Dockerfile im Container verankert.
Um Redis einzuschalten, müssen Sie es lokal installieren. Auf einem Mac können Sie Folgendes tun:
# assuming you use Homebrew brew install redis brew services start redis
Um Redis-Caching zu verwenden, müssen Sie es mit einer Umgebungsvariablen aktivieren:
export REDIS_ENABLED=1
Wir verwenden Pre-Commit, um sicherzustellen, dass der festgeschriebene Code den grundlegenden Standards für die Formatierung entspricht, und nehmen für Sie grundlegende Korrekturen vor, um Zeit und Ärger zu sparen.
Installieren Sie pre-commit systemweit mit z. B. brew install pre-commit
. Installieren Sie dann die Hooks in diesem Repository mit 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
Wir hatten Probleme beim lokalen Ausführen von Celery aufgrund einer seiner Abhängigkeiten: Pycurl. Aufgrund der Komplexität des Problems unterstützen wir auch die Ausführung von Celery über 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
Aufgaben werden über den Befehl flask
ausgeführt – führen Sie flask --help
aus, um weitere Informationen zu erhalten. Wir müssen uns um zwei Abschnitte kümmern: flask db
enthält Alembic-Migrationsbefehle und flask command
enthält alle unsere benutzerdefinierten Befehle. Um beispielsweise alle dynamisch generierten Funktionstestdaten zu löschen, gehen Sie wie folgt vor:
Vor Ort
flask command purge_functional_test_data -u <functional tests user name prefix>
Zur Ausführung in ecs können Sie das Skript ecs-exec.sh verwenden
./scripts/ecs-exec/ecs-exec.sh <select notify-api> flask command purge_functional_test_data -u <functional tests user name prefix>
Alle flask-Befehle und Befehlsoptionen verfügen über den Befehl --help, falls Sie weitere Informationen benötigen.
Öffentliche APIs schreiben
Abhängigkeiten aktualisieren