romm: run rq cron and a scans worker for RomM 5.3 (#17502)

RomM 5.3.0 dropped rq-scheduler (rommapp/romm@4e5921727), so
romm-scheduler.service fails with 203/EXEC on a missing
.venv/bin/rqscheduler. The same release moved scans to their own
"scans" queue (rommapp/romm@3593d2398), which the LXC worker never
listened on, so scans queued but never ran.

Match upstream's docker init: the scheduler service runs
`rq cron tasks.cron_config`, both workers run with --with-scheduler
so delayed jobs (watcher rescans) are released, and a new
romm-scan-worker.service consumes the scans queue.

The update script migrates existing units when romm-scheduler.service
still references rqscheduler. It runs before the release check, so
installs already on 5.3.x get repaired too.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
David Barrera
2026-09-26 14:37:22 -04:00
committed by GitHub
parent 76a09f5ad9
commit 9489724d86
2 changed files with 41 additions and 8 deletions
+19 -3
View File
@@ -40,9 +40,25 @@ function update_script() {
NODE_VERSION="24" setup_nodejs
# RomM 5.3.0 replaced rq-scheduler with `rq cron` and moved scans to their own queue
if grep -q rqscheduler /etc/systemd/system/romm-scheduler.service 2>/dev/null; then
msg_info "Migrating RQ services"
sed -i -e '/RQ_REDIS_/d' \
-e 's|^ExecStart=.*|ExecStart=/opt/romm/.venv/bin/rq cron --path /opt/romm/backend --url redis://127.0.0.1:6379/0 tasks.cron_config|' \
/etc/systemd/system/romm-scheduler.service
sed -i 's|bin/rq worker --path|bin/rq worker --with-scheduler --path|' /etc/systemd/system/romm-worker.service
sed -e 's|^Description=.*|Description=RomM RQ Scan Worker|' \
-e 's|^ExecStart=.*|ExecStart=/opt/romm/.venv/bin/rq worker --with-scheduler --path /opt/romm/backend --url redis://127.0.0.1:6379/0 scans|' \
/etc/systemd/system/romm-worker.service >/etc/systemd/system/romm-scan-worker.service
systemctl daemon-reload
systemctl enable -q --now romm-scan-worker
systemctl restart romm-worker romm-scheduler
msg_ok "Migrated RQ services"
fi
if check_for_gh_release "romm" "rommapp/romm"; then
msg_info "Stopping Services"
systemctl stop romm-backend romm-worker romm-scheduler romm-watcher
systemctl stop romm-backend romm-worker romm-scan-worker romm-scheduler romm-watcher
msg_ok "Stopped Services"
create_backup /opt/romm/.env
@@ -231,14 +247,14 @@ DROPEOF
fi
msg_info "Starting Services"
systemctl start romm-backend romm-worker romm-scheduler romm-watcher
systemctl start romm-backend romm-worker romm-scan-worker romm-scheduler romm-watcher
msg_ok "Started Services"
msg_ok "Updated successfully"
fi
if check_for_gh_release "EmulatorJS" "EmulatorJS/EmulatorJS" "v4.2.3"; then
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "EmulatorJS" "EmulatorJS/EmulatorJS" "prebuild" "v4.2.3" "/opt/romm/frontend/dist/assets/emulatorjs" "4.2.3.7z"
systemctl restart romm-backend romm-worker romm-scheduler romm-watcher
systemctl restart romm-backend romm-worker romm-scan-worker romm-scheduler romm-watcher
msg_ok "Updated EmulatorJS successfully"
fi
exit
+22 -5
View File
@@ -381,7 +381,26 @@ Type=simple
WorkingDirectory=/opt/romm/backend
EnvironmentFile=/opt/romm/.env
Environment="PYTHONPATH=/opt/romm/backend"
ExecStart=/opt/romm/.venv/bin/rq worker --path /opt/romm/backend --url redis://127.0.0.1:6379/0 high default low
ExecStart=/opt/romm/.venv/bin/rq worker --with-scheduler --path /opt/romm/backend --url redis://127.0.0.1:6379/0 high default low
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/romm-scan-worker.service
[Unit]
Description=RomM RQ Scan Worker
After=network.target mariadb.service redis-server.service romm-backend.service
Requires=mariadb.service redis-server.service
[Service]
Type=simple
WorkingDirectory=/opt/romm/backend
EnvironmentFile=/opt/romm/.env
Environment="PYTHONPATH=/opt/romm/backend"
ExecStart=/opt/romm/.venv/bin/rq worker --with-scheduler --path /opt/romm/backend --url redis://127.0.0.1:6379/0 scans
Restart=on-failure
RestartSec=5
@@ -400,9 +419,7 @@ Type=simple
WorkingDirectory=/opt/romm/backend
EnvironmentFile=/opt/romm/.env
Environment="PYTHONPATH=/opt/romm/backend"
Environment="RQ_REDIS_HOST=127.0.0.1"
Environment="RQ_REDIS_PORT=6379"
ExecStart=/opt/romm/.venv/bin/rqscheduler --path /opt/romm/backend
ExecStart=/opt/romm/.venv/bin/rq cron --path /opt/romm/backend --url redis://127.0.0.1:6379/0 tasks.cron_config
Restart=on-failure
RestartSec=5
@@ -429,7 +446,7 @@ RestartSec=5
WantedBy=multi-user.target
EOF
systemctl enable -q --now romm-backend romm-worker romm-scheduler romm-watcher
systemctl enable -q --now romm-backend romm-worker romm-scan-worker romm-scheduler romm-watcher
msg_ok "Created Services"
motd_ssh