1
0
Files
CommentAutomation/README.md

2.2 KiB

CommentAutomation

Python project initialized with uv.

Quick start

  1. Install uv.

  2. Sync dependencies:

    uv sync --group dev

  3. Run the app:

    uv run uvicorn comment_automation.main:app --app-dir src --host 0.0.0.0 --port 8000

  4. Run tests:

    uv run pytest

Webhooks

Instagram comments webhook endpoint:

  • POST /webhooks/instagram/comments

The route validates incoming payloads and enqueues a Celery task.

LLM task configuration

The Celery task that handles webhook payload forwarding reads these environment variables:

  • LLM_ENDPOINT_URL (required): Full HTTP(S) URL for the downstream LLM endpoint.
  • LLM_ENDPOINT_API_KEY (optional): Bearer token sent as Authorization header.
  • LLM_ENDPOINT_TIMEOUT_SECONDS (optional): Request timeout in seconds. Defaults to 10.

Retry behavior is built into the task:

  • Retries transient failures (network/timeouts and HTTP 429/500/502/503/504).
  • Exponential backoff enabled.
  • Retry delay is jittered.
  • Maximum retries is 7.

Running a Celery worker

The Celery entrypoint is in src/comment_automation/celery_app.py.

It reads these environment variables:

  • CELERY_BROKER_URL (optional): Message broker URL. Defaults to redis://localhost:6379/0.
  • CELERY_RESULT_BACKEND (optional): Result backend URL. Defaults to redis://localhost:6379/0.

With uv:

uv run celery -A comment_automation.celery_app:celery_app worker --loglevel=info

Without uv (venv already created):

./.venv/bin/celery -A comment_automation.celery_app:celery_app worker --loglevel=info

Docker targets and entrypoint modes

The container uses entrypoint.sh and supports two main modes:

  • http: starts the FastAPI app.
  • celery: starts the Celery worker.

Build local/test target (installs all dependency groups):

docker build --target local_test -t comment-automation:local .

Build production target (installs only non-dev dependencies):

docker build --target production -t comment-automation:prod .

Run HTTP app (default mode):

docker run --rm -p 8000:8000 comment-automation:prod

Run Celery worker mode:

docker run --rm
-e CELERY_BROKER_URL=redis://host.docker.internal:6379/0
-e CELERY_RESULT_BACKEND=redis://host.docker.internal:6379/0
comment-automation:prod celery