包含:
GOV.UK Notify 面向公眾的 REST API,團隊可以使用我們的客戶進行集成
使用 Flask 建立的僅供內部使用的 REST API,用於管理服務、使用者、範本等(這是管理應用程式與之對話的內容)
使用 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 才能運作。
如果您使用的是 notification-local,則 docker-compose 檔案將自動提供正確的 Postgres 版本。
如果您手動執行此應用程序,則需要自行管理 Postgres。安裝 Postgres.app。檢查上面的 docker-compose 檔案以找到要使用的正確 Postgres 版本。
當我們的單元測試在 Concourse 中執行時,Postgres 透過 docker/Dockerfile 的 concourse_tests 步驟嵌入到容器中。
要開啟 redis,您需要在本機安裝它。在 Mac 上您可以執行以下操作:
# assuming you use Homebrew brew install redis brew services start redis
要使用 redis 緩存,您需要使用環境變數將其開啟:
export REDIS_ENABLED=1
我們使用預先提交來確保提交的程式碼符合基本的格式標準,並將為您進行基本修復,以節省時間並減少麻煩。
使用例如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 運行 Celery:
# 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
包含 alembic 遷移指令, 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
更新依賴項