ประกอบด้วย:
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>
เรียกใช้สิ่งต่อไปนี้ใน repo ข้อมูลรับรองเพื่อรับคีย์ API
notify-pass credentials/firetext notify-pass credentials/mmg
แอพนี้ต้องการให้ Postgres ทำงาน
หากคุณใช้การแจ้งเตือนในเครื่อง ไฟล์นักเทียบท่าจะจัดเตรียมเวอร์ชัน Postgres ที่ถูกต้องโดยอัตโนมัติ
หากคุณใช้งานแอปนี้ด้วยตนเอง คุณจะต้องจัดการ Postgres ด้วยตนเอง ติดตั้ง Postgres.app ตรวจสอบไฟล์นักเทียบท่าด้านบนเพื่อค้นหาเวอร์ชัน 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
จากนั้น ติดตั้ง hooks ในพื้นที่เก็บข้อมูลนี้ด้วย 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
มีคำสั่งการย้ายแบบ 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>
คำสั่งขวดและตัวเลือกคำสั่งทั้งหมดมีคำสั่ง --help หากคุณต้องการข้อมูลเพิ่มเติม
การเขียน API สาธารณะ
กำลังอัปเดตการพึ่งพา