feat(phase-5): on-prem sync poll hardening + stale job reclaim
Harden the Hub-side polling protocol for on-prem TapTrack agents: - sync/poll: accept job_failed_ids (retry/fail on-prem delivery failures) - sync/poll: deduct credits + write ledger when on-prem reports sent jobs - sync/poll: return feature_flags (tier-based) + suspended flag in config - sync/poll: skip job dispatch for suspended/expired schools - sms_jobs: add delivered_via (pull|push) + processing_started_at columns - tasks/sms: new sms.reclaim_stale_jobs task resets processing→pending if on-prem goes offline (jobs stuck >5 min), enabling Celery push fallback - tasks/sms: tag Celery-sent jobs as delivered_via='push' - worker: schedule reclaim_stale_jobs every 5 minutes - migration: 001_phase5 adds delivered_via + processing_started_at to sms_jobs
This commit is contained in:
@@ -24,11 +24,16 @@ celery_app.conf.update(
|
||||
timezone="Asia/Manila",
|
||||
enable_utc=True,
|
||||
beat_schedule={
|
||||
# Process pending SMS jobs every 30 seconds
|
||||
# Process pending SMS jobs every 30 seconds (push path via Semaphore)
|
||||
"process-sms-queue": {
|
||||
"task": "sms.process_queue",
|
||||
"schedule": 30.0,
|
||||
},
|
||||
# Reclaim processing jobs where on-prem went offline (every 5 minutes)
|
||||
"reclaim-stale-sms-jobs": {
|
||||
"task": "sms.reclaim_stale_jobs",
|
||||
"schedule": 300.0,
|
||||
},
|
||||
# Check license expiry every day at 8am
|
||||
"check-license-expiry": {
|
||||
"task": "license.check_expiry",
|
||||
|
||||
Reference in New Issue
Block a user