@md-anas-sabah/async-task-runner
Version:
Powerful async task runner for Node.js with concurrency control, smart retries, timeouts & comprehensive reporting. Perfect for web scraping, API processing, file operations & bulk async operations.
199 lines (157 loc) • 5.98 kB
Markdown
# Examples
This directory contains comprehensive examples demonstrating various use cases for `async-task-runner`.
## 📁 Available Examples
### 🕷️ [web-scraping.js](./web-scraping.js)
Demonstrates web scraping with rate limiting and error handling:
- Concurrent page scraping with controlled concurrency
- Retry logic for handling network failures
- Timeout protection for hanging requests
- Comprehensive error reporting and success tracking
**Key Features:**
- Simulated product data scraping
- Real-world HTTP error scenarios
- Rate limiting to respect server resources
- Detailed performance metrics
**Run:** `node examples/web-scraping.js`
### 📁 [file-processing.js](./file-processing.js)
Shows batch file processing with specialized handlers:
- Process multiple file types concurrently
- Specialized processing logic for different formats (CSV, JSON, logs, etc.)
- Automatic retry for I/O failures
- Progress tracking and detailed reporting
**Key Features:**
- Log file analysis and error extraction
- CSV data transformation and validation
- JSON data processing and enrichment
- Text analysis and word frequency counting
- Configuration file parsing and structuring
- Code analysis and metadata extraction
**Run:** `node examples/file-processing.js`
### 🌐 [api-integration.js](./api-integration.js)
Comprehensive API batch processing scenarios:
- Multiple API endpoint processing
- User data enrichment pipelines
- Data source synchronization
- Rate limiting and authentication handling
**Key Features:**
- Simulated API calls with realistic failure rates
- User enrichment from multiple data sources
- Batch synchronization operations
- Error categorization and retry strategies
**Run:** `node examples/api-integration.js`
## 🚀 Running Examples
### Prerequisites
Make sure you have built the project:
```bash
npm run build
```
### Run Individual Examples
```bash
# Web scraping demo
node examples/web-scraping.js
# File processing demo
node examples/file-processing.js
# API integration demo
node examples/api-integration.js
```
### Run All Examples
```bash
# Run all examples in sequence
for example in examples/*.js; do
echo "Running $example..."
node "$example"
echo "---"
done
```
## 📊 What You'll Learn
### Concurrency Control
- How to limit concurrent operations to respect system resources
- Balancing throughput vs. resource constraints
- Managing different concurrency levels for different operation types
### Error Handling & Retries
- Implementing intelligent retry strategies
- Using exponential backoff to handle rate limits
- Categorizing and reporting different error types
- Graceful degradation for partial failures
### Timeout Management
- Preventing operations from hanging indefinitely
- Setting appropriate timeouts for different operation types
- Handling timeout errors in retry scenarios
### Performance Monitoring
- Tracking operation success/failure rates
- Measuring execution times and throughput
- Generating comprehensive performance reports
- Identifying bottlenecks and optimization opportunities
### Real-World Patterns
- Web scraping best practices
- Batch file processing workflows
- API integration and data synchronization
- Error recovery and resilience patterns
## 🎯 Use Case Scenarios
### Web Scraping
Perfect for:
- Product catalog scraping
- News article aggregation
- Price monitoring systems
- SEO audit tools
- Social media content collection
### File Processing
Ideal for:
- Log file analysis and monitoring
- Data transformation pipelines
- Batch image/document processing
- Configuration file management
- Code analysis and metrics
### API Integration
Great for:
- Data synchronization between systems
- User data enrichment workflows
- Webhook processing pipelines
- Third-party service integration
- Microservice orchestration
## 🔧 Customization
Each example includes:
- **Configurable parameters** - Adjust concurrency, timeouts, and retry settings
- **Realistic failure simulation** - See how the system handles various error conditions
- **Performance metrics** - Monitor execution time, success rates, and throughput
- **Extensible patterns** - Easy to adapt for your specific use cases
## 📈 Performance Tips
Based on the examples, here are key performance optimization strategies:
1. **Concurrency Tuning**
- Start with moderate concurrency (2-5)
- Monitor resource usage and adjust accordingly
- Consider target system limitations (API rate limits, server capacity)
2. **Retry Strategy**
- Use exponential backoff for rate-limited APIs
- Set reasonable maximum retry delays
- Implement different retry counts for different operation criticality
3. **Timeout Configuration**
- Set timeouts based on expected operation duration
- Use shorter timeouts for user-facing operations
- Allow longer timeouts for complex batch operations
4. **Error Handling**
- Categorize errors to apply appropriate retry strategies
- Log detailed error information for debugging
- Implement circuit breaker patterns for cascading failures
## 🤝 Contributing Examples
We welcome additional examples! When contributing:
1. **Follow the existing pattern**:
- Clear documentation and comments
- Realistic error simulation
- Comprehensive logging and reporting
- Real-world applicability
2. **Include**:
- Header comment explaining the use case
- Configuration examples
- Error handling demonstrations
- Performance metrics
- Real-world code patterns
3. **Test thoroughly**:
- Verify examples work with current package version
- Test various failure scenarios
- Ensure examples are educational and practical
## 📚 Additional Resources
- [Main README](../README.md) - Package overview and API reference
- [Source Code](../src/) - Implementation details
- [Tests](../test-*.js) - Unit tests and validation scripts
- [Development Log](../CLAUDE.md) - Development history and phase progression