diff --git a/Procfile b/Procfile index ca897c1b7..7fed847d9 100644 --- a/Procfile +++ b/Procfile @@ -1,4 +1,4 @@ -web: python manage.py collectstatic --noinput && python manage.py migrate --noinput && gunicorn config.wsgi --bind 0.0.0.0:$PORT -app: python manage.py migrate --noinput && gunicorn config.wsgi --bind 0.0.0.0:$PORT -celery_worker: celery -A config worker -l DEBUG -celery_beat: celery -A config beat -l info -S django +web: python manage.py collectstatic --noinput && python manage.py migrate --noinput && ddtrace-run gunicorn config.wsgi --bind 0.0.0.0:$PORT +app: ./entrypoints/app.sh +celery_worker: ./entrypoints/celery-worker.sh +celery_beat: ./entrypoints/celery-beat.sh diff --git a/config/settings.py b/config/settings.py index 983844924..b8e94c63f 100644 --- a/config/settings.py +++ b/config/settings.py @@ -103,6 +103,7 @@ 'wagtail_localize', 'wagtail_localize.locales', 'domestic_growth.apps.DomesticGrowthConfig', + 'ddtrace.contrib.django', ] MIDDLEWARE = [ diff --git a/entrypoints/app.sh b/entrypoints/app.sh new file mode 100755 index 000000000..47a8131f2 --- /dev/null +++ b/entrypoints/app.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +python manage.py migrate --noinput + +if [[ "$COPILOT_ENVIRONMENT_NAME" == "dev" ]]; then + echo "Dev Environment Detected" + echo "$COPILOT_ENVIRONMENT_NAME" + ddtrace-run gunicorn config.wsgi --bind 0.0.0.0:$PORT +else + echo "Dev Environment Not Detected" + echo "$COPILOT_ENVIRONMENT_NAME" + gunicorn config.wsgi --bind 0.0.0.0:$PORT +fi diff --git a/entrypoints/celery-beat.sh b/entrypoints/celery-beat.sh new file mode 100755 index 000000000..05c0069f1 --- /dev/null +++ b/entrypoints/celery-beat.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +if [[ "$COPILOT_ENVIRONMENT_NAME" == "dev" ]]; then + ddtrace-run celery -A config beat -l info -S django +else + gunicorn celery -A config beat -l info -S django +fi diff --git a/entrypoints/celery-worker.sh b/entrypoints/celery-worker.sh new file mode 100755 index 000000000..889a483f4 --- /dev/null +++ b/entrypoints/celery-worker.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +if [[ "$COPILOT_ENVIRONMENT_NAME" == "dev" ]]; then + ddtrace-run celery -A config worker -l DEBUG +else + celery -A config worker -l DEBUG +fi diff --git a/requirements.in b/requirements.in index e3c1d92b4..847829689 100644 --- a/requirements.in +++ b/requirements.in @@ -87,3 +87,4 @@ pydantic-settings==2.3.1 certifi==2024.7.4 python-bidi==0.4.2 elasticsearch==7.13.4 +ddtrace==2.21.0 diff --git a/requirements.txt b/requirements.txt index 7318c7c07..1034c6254 100644 --- a/requirements.txt +++ b/requirements.txt @@ -52,6 +52,8 @@ botocore==1.27.96 # via # boto3 # s3transfer +bytecode==0.16.1 + # via ddtrace celery[redis]==5.3.6 # via # -r requirements.in @@ -101,6 +103,8 @@ dateparser==0.7.2 # via -r requirements.in dbt-copilot-python==0.2.1 # via -r requirements.in +ddtrace==2.21.0 + # via -r requirements.in defusedxml==0.7.1 # via willow deprecated==1.2.18 @@ -231,6 +235,8 @@ elastic-apm==6.1.3 # via -r requirements.in elasticsearch==7.13.4 # via -r requirements.in +envier==0.6.1 + # via ddtrace et-xmlfile==2.0.0 # via openpyxl events==0.5 @@ -335,6 +341,7 @@ opensearch-py==2.6.0 # opensearch-dsl opentelemetry-api==1.22.0 # via + # ddtrace # opentelemetry-distro # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http @@ -409,6 +416,7 @@ prompt-toolkit==3.0.50 # via click-repl protobuf==4.25.6 # via + # ddtrace # googleapis-common-protos # opentelemetry-proto psycopg2==2.9.9 @@ -557,6 +565,8 @@ tomli==2.2.1 typing-extensions==4.12.2 # via # asgiref + # bytecode + # ddtrace # dj-database-url # kombu # opentelemetry-sdk @@ -640,10 +650,13 @@ willow[heif]==1.6.3 # willow wrapt==1.17.2 # via + # ddtrace # deprecated # opentelemetry-instrumentation xhtml2pdf==0.2.15 # via -r requirements.in +xmltodict==0.14.2 + # via ddtrace zipp==3.21.0 # via importlib-metadata diff --git a/requirements_test.txt b/requirements_test.txt index 78f974843..aed595900 100644 --- a/requirements_test.txt +++ b/requirements_test.txt @@ -76,6 +76,8 @@ browserstack-sdk==1.12.0 # via -r requirements_test.in build==1.2.2.post1 # via pip-tools +bytecode==0.16.1 + # via ddtrace celery[redis]==5.3.6 # via # -r requirements.in @@ -143,6 +145,8 @@ dateparser==0.7.2 # -r requirements_test.in dbt-copilot-python==0.2.1 # via -r requirements.in +ddtrace==2.21.0 + # via -r requirements.in decorator==5.1.1 # via # ipdb @@ -288,6 +292,8 @@ elastic-apm==6.1.3 # via -r requirements.in elasticsearch==7.13.4 # via -r requirements.in +envier==0.6.1 + # via ddtrace et-xmlfile==2.0.0 # via openpyxl events==0.5 @@ -486,6 +492,7 @@ opensearch-py==2.6.0 # opensearch-dsl opentelemetry-api==1.22.0 # via + # ddtrace # opentelemetry-distro # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http @@ -594,6 +601,7 @@ prompt-toolkit==3.0.50 # ipython protobuf==4.25.6 # via + # ddtrace # googleapis-common-protos # opentelemetry-proto psutil==7.0.0 @@ -863,6 +871,8 @@ typing-extensions==4.12.2 # asgiref # astroid # black + # bytecode + # ddtrace # dj-database-url # djlint # ipython @@ -964,12 +974,15 @@ willow[heif]==1.6.3 # willow wrapt==1.17.2 # via + # ddtrace # deprecated # opentelemetry-instrumentation wsproto==1.2.0 # via trio-websocket xhtml2pdf==0.2.15 # via -r requirements.in +xmltodict==0.14.2 + # via ddtrace zipp==3.21.0 # via importlib-metadata zope-event==5.0