changes to task scheduling and readability change on downloads view

This commit is contained in:
Bryan Van Deusen
2026-01-29 19:33:04 -05:00
parent 575e20f58c
commit fcccfb24ee
18 changed files with 527 additions and 72 deletions
+35
View File
@@ -207,6 +207,41 @@ async def reset_orphaned_downloads():
return jsonify({"error": str(e)}), 500
@bp.route("/requeue-stale", methods=["POST"])
async def requeue_stale_downloads():
"""Re-queue Celery tasks for downloads stuck in 'queued' status.
Downloads can get stuck in 'queued' database status if the Celery task
was lost (e.g., sent to wrong Redis DB, Redis restart, etc.).
This endpoint re-sends the Celery tasks for those jobs.
"""
from app.tasks.maintenance import requeue_stale_jobs, _requeue_all_queued_jobs_async
data = await request.get_json() or {}
threshold_minutes = data.get("threshold_minutes", 0) # 0 = re-queue ALL queued jobs
try:
if threshold_minutes == 0:
# Re-queue all queued jobs immediately (synchronous for immediate feedback)
result = await _requeue_all_queued_jobs_async()
current_app.logger.info(f"Manual re-queue of all queued jobs: {result}")
return jsonify({
"message": f"Re-queued {result['requeued_count']} queued jobs",
"requeued_count": result['requeued_count'],
})
else:
# Queue the task for threshold-based re-queue
task = requeue_stale_jobs.delay(threshold_minutes)
return jsonify({
"message": "Stale job re-queue queued",
"task_id": task.id,
"threshold_minutes": threshold_minutes,
}), 202
except Exception as e:
current_app.logger.error(f"Failed to re-queue stale jobs: {e}")
return jsonify({"error": str(e)}), 500
@bp.route("/stats", methods=["GET"])
async def get_stats():
"""Get download statistics."""