Celery worker that asynchronously loads static GTFS feeds into the database
  • Python 96.2%
  • Dockerfile 2.8%
  • Makefile 1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-30 21:42:07 +02:00
.forgejo/workflows chore: sync shared repo standards 2026-09-22 13:58:55 +02:00
src/schedule_foamer chore: sync shared repo standards 2026-09-22 13:58:55 +02:00
tests chore: sync shared repo standards 2026-09-22 13:58:55 +02:00
.env feat: initial commit 2026-03-08 21:56:45 +01:00
.env.example feat(loader): load a hosted feed from object storage 2026-08-21 13:44:51 +02:00
.gitignore chore: copier update to v0.1.0 2026-04-17 21:45:35 +02:00
.gitleaks.toml chore: add gitleaks config 2026-09-30 20:41:50 +02:00
.pre-commit-config.yaml build: default pre-commit 2026-03-10 15:02:54 +01:00
CLAUDE.md chore: sync shared repo standards 2026-09-22 13:58:55 +02:00
Dockerfile fix: fix copier apply 2026-05-04 00:59:30 +02:00
LICENSE.txt docs: add agpl-3 2026-03-10 14:44:50 +01:00
Makefile chore: apply bare-chassis copier template 2026-04-17 00:50:45 +02:00
pyproject.toml build(deps): install railroad-club from GitHub 2026-09-30 19:27:19 +02:00
README.md docs: fix module paths, tasks, compose repo and table owner in README 2026-09-30 21:42:07 +02:00
uv.lock build(deps): install railroad-club from GitHub 2026-09-30 19:27:19 +02:00

schedule-foamer

Celery worker that downloads GTFS static feeds, parses them, and writes to PostgreSQL tables defined in railroad-club.

Quick start

cp .env.example .env
# Edit .env with your DATABASE_URL and Redis URLs
uv sync
uv run pre-commit install   # install git hooks (required once per clone)
uv run celery -A schedule_foamer.celery_app worker -l info
uv run celery -A schedule_foamer.celery_app beat -l info   # periodic scheduling, separate process

Development commands

# Install git hooks (required once per clone)
uv run pre-commit install

uv run ruff check src/          # lint
uv run ruff check --fix src/    # lint + autofix

Docker

Built and run as part of music-student's docker-compose:

cd ../music-student
docker compose up --build

Tasks

Task Description
schedule_foamer.tasks.load_feed Download and parse a single GTFS feed by ID
schedule_foamer.tasks.ensure_all_feeds_scheduled Enqueue load_feed for feeds never loaded, failed, stuck, or (url feeds only) last loaded over 24h ago (runs every minute)