(feature) add queued backup worker foundation

Move backup execution out of the management command into a reusable
backup runner service that can execute an existing BackupRun record.

Add queue primitives and a run_pobsync_worker command so manual backup
requests can be recorded as queued SQL state and processed outside the
web request path.

Add a worker Docker service and pobsync worker CLI alias, with tests for
queued run creation, worker execution, manual run typing, and command
mapping.
This commit is contained in:
2026-05-19 13:00:12 +02:00
parent aea22597ba
commit fe8e65e12e
9 changed files with 361 additions and 92 deletions

View File

@@ -29,6 +29,20 @@ services:
- pobsync_db:/var/lib/pobsync
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
worker:
build: .
command: python manage.py run_pobsync_worker --loop --interval 15
environment:
POBSYNC_DJANGO_DEBUG: "1"
POBSYNC_DJANGO_SECRET_KEY: "dev-only-change-me"
POBSYNC_DJANGO_ALLOWED_HOSTS: "localhost,127.0.0.1,0.0.0.0"
POBSYNC_HOME: "/opt/pobsync"
POBSYNC_SQLITE_PATH: "/var/lib/pobsync/pobsync.sqlite3"
volumes:
- pobsync_state:/opt/pobsync
- pobsync_db:/var/lib/pobsync
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
web-mariadb:
profiles: ["mariadb"]
build: .
@@ -73,6 +87,27 @@ services:
- pobsync_state:/opt/pobsync
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
worker-mariadb:
profiles: ["mariadb"]
build: .
command: python manage.py run_pobsync_worker --loop --interval 15
environment:
POBSYNC_DJANGO_DEBUG: "1"
POBSYNC_DJANGO_SECRET_KEY: "dev-only-change-me"
POBSYNC_DJANGO_ALLOWED_HOSTS: "localhost,127.0.0.1,0.0.0.0"
POBSYNC_HOME: "/opt/pobsync"
POBSYNC_DB_ENGINE: "mariadb"
POBSYNC_DB_HOST: "db"
POBSYNC_DB_NAME: "pobsync"
POBSYNC_DB_USER: "pobsync"
POBSYNC_DB_PASSWORD: "pobsync"
depends_on:
db:
condition: service_healthy
volumes:
- pobsync_state:/opt/pobsync
- ${POBSYNC_BACKUP_ROOT:-./backups}:/backups
db:
profiles: ["mariadb"]
image: mariadb:11