Run the periodic commands in a scheduler service (no host cron)
Adds deploy/scheduler-entrypoint.sh to the backend image (entrypoint j621-scheduler) and a scheduler service to the four composes that have a backend. It waits until the database and migrations are ready, runs every job once, then keeps to the intervals: sync_followed_tags + sync_followed_pools every 30 min (J621_SYNC_EVERY) cleanup_similarity hourly (J621_CLEAN_EVERY) refresh_guest_blacklist daily (J621_BLACKLIST_EVERY) It shares the backend image, media volume and env file, so commands see the same library and database; failures are logged and retried next interval. Output goes to docker compose logs scheduler; the frontend-only composes have no backend and therefore no scheduler. Verified against a real stack: the scheduler waited for migrations, ran all four commands on start (follow syncs as anonymous, similarity cleanup, and a guest blacklist refresh that pulled the real 14-tag list from e621), and kept looping. All six composes still validate.
This commit is contained in:
@@ -49,6 +49,12 @@ DB_ROOT_PASSWORD=j621root
|
||||
# GUNICORN_THREADS=4
|
||||
# GUNICORN_TIMEOUT=120
|
||||
|
||||
# Scheduler intervals in seconds (the "scheduler" service runs the periodic
|
||||
# management commands; see deploy/README.md)
|
||||
# J621_SYNC_EVERY=1800
|
||||
# J621_CLEAN_EVERY=3600
|
||||
# J621_BLACKLIST_EVERY=86400
|
||||
|
||||
# Rate limits (per IP anonymous, per account signed in)
|
||||
# THROTTLE_ANON=120/min
|
||||
# THROTTLE_USER=600/min
|
||||
|
||||
Reference in New Issue
Block a user