Содержит:
общедоступный REST API для GOV.UK Notify, с которым команды могут интегрироваться с помощью наших клиентов.
REST API только для внутреннего использования, созданный с использованием Flask для управления сервисами, пользователями, шаблонами и т. д. (это то, о чем говорит приложение администратора)
асинхронные рабочие процессы, созданные с использованием Celery для помещения вещей в очереди и считывания их для обработки, отправки поставщикам, обновления и т. д.
Мы запускаем Python 3.11 как локально, так и в рабочей среде.
Следуйте этим инструкциям на компьютерах Mac M1.
Для запуска API вам потребуются соответствующие учетные данные AWS. Дополнительную информацию смотрите в Wiki.
environment.sh
Создание и редактирование файла 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
Что нужно изменить:
Замените YOUR_OWN_PREFIX
на local_dev_<first name>
.
Запустите следующую команду в репозитории учетных данных, чтобы получить ключи API.
notify-pass credentials/firetext notify-pass credentials/mmg
Для работы этого приложения требуется Postgres.
Если вы используете локальные уведомления, правильная версия Postgres будет автоматически предоставлена файлом docker-compose.
Если вы запускаете это приложение вручную, вам придется управлять Postgres самостоятельно. Установите Postgres.app. Проверьте файл docker-compose выше, чтобы найти правильную версию Postgres для использования.
Когда наши модульные тесты запускаются в Concourse, Postgres помещается в контейнер через этап concourse_tests в docker/Dockerfile.
Чтобы включить Redis, вам необходимо установить его локально. На Mac вы можете сделать:
# assuming you use Homebrew brew install redis brew services start redis
Чтобы использовать кэширование Redis, вам необходимо включить его с помощью переменной среды:
export REDIS_ENABLED=1
Мы используем предварительную фиксацию, чтобы гарантировать, что зафиксированный код соответствует основным стандартам форматирования, и внесем базовые исправления, чтобы вы сэкономили время и избавились от неприятностей.
Установите pre-commit по всей системе, например brew install pre-commit
. Затем установите перехватчики в этот репозиторий с помощью 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
У нас возникли проблемы с локальным запуском Celery из-за одной из его зависимостей: pycurl. Из-за сложности проблемы мы также поддерживаем запуск Celery через 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
Задачи выполняются с помощью команды flask
— запустите flask --help
для получения дополнительной информации. Есть два раздела, о которых нам нужно позаботиться: flask db
содержит команды миграции перегонного куба, а flask command
содержит все наши пользовательские команды. Например, чтобы очистить все динамически созданные данные функциональных испытаний, выполните следующие действия:
Локально
flask command purge_functional_test_data -u <functional tests user name prefix>
Для выполнения в ecs вы можете использовать скрипт ecs-exec.sh.
./scripts/ecs-exec/ecs-exec.sh <select notify-api> flask command purge_functional_test_data -u <functional tests user name prefix>
Все команды и параметры команды flask имеют команду --help, если вам нужна дополнительная информация.
Написание общедоступных API
Обновление зависимостей