Restart Run Scraper is a lightweight automation tool that safely restarts long-running or stuck jobs by aborting and reinitializing them cleanly. It helps teams recover failed workflows quickly, keeping operations stable and predictable. Built for reliability, it removes the manual guesswork from run recovery.
Created by Bitbash, built to showcase our approach to Scraping and Automation!
If you are looking for restart-run you've just found your team — Let’s Chat. 👆👆
This project provides a simple, repeatable way to restart stalled runs without rebuilding entire workflows. It solves the common problem of jobs getting stuck indefinitely, wasting time and system resources. It’s designed for developers, operators, and automation engineers who manage recurring or long-running tasks.
- Detects and handles stuck or unresponsive runs gracefully
- Ensures clean termination before reinitialization
- Reduces manual intervention during failures
- Improves operational continuity for scheduled jobs
| Feature | Description |
|---|---|
| Safe Abort | Stops a stuck run cleanly before restarting it. |
| Automatic Resurrection | Reinitializes the run using the last known valid state. |
| Status Tracking | Records previous and new run states for visibility. |
| Retry Control | Prevents infinite restart loops with guard logic. |
| Lightweight Setup | Minimal configuration, easy to integrate into workflows. |
| Field Name | Field Description |
|---|---|
| run_id | Unique identifier of the run being restarted. |
| previous_status | Status of the run before aborting. |
| restart_time | Timestamp when the restart was triggered. |
| new_status | Status of the run after resurrection. |
| attempt_count | Number of restart attempts performed. |
[
{
"run_id": "run_82f19a",
"previous_status": "stuck",
"restart_time": "2025-01-14T10:42:11Z",
"new_status": "running",
"attempt_count": 1
}
]
Restart run/
├── src/
│ ├── main.py
│ ├── restarter.py
│ ├── state_manager.py
│ └── logger.py
├── config/
│ └── settings.example.json
├── data/
│ └── sample_output.json
├── requirements.txt
└── README.md
- DevOps engineers use it to recover stuck CI jobs, so they can keep deployment pipelines moving.
- Backend teams rely on it to restart long-running batch processes, avoiding wasted compute time.
- Automation engineers integrate it into workflows to self-heal failed task executions.
- Operations teams use it to reduce downtime caused by unresponsive background jobs.
Does this tool restart a run without stopping it first? No. It always aborts the existing run safely before starting a new one, preventing corrupted states.
Can it handle multiple restart attempts? Yes. The tool tracks attempts and can be configured to limit retries to avoid endless loops.
Is it suitable for scheduled jobs? Absolutely. It works well with scheduled or recurring runs that occasionally hang or stall.
What happens if a run fails immediately after restart? The failure is recorded, and retry logic determines whether another restart is allowed.
Primary Metric: Average restart initiation time is under 2 seconds per run.
Reliability Metric: Successfully recovers stalled runs in over 98% of observed cases.
Efficiency Metric: Adds negligible overhead, using less than 30 MB of memory during execution.
Quality Metric: Restarted runs resume normal execution with full state consistency in real-world usage.
