Documentation
Django Revolution
v1.0.13
Usage Guide - Django Revolution
Basic Usage
Generate Clients
# Interactive generation (recommended)python manage.py revolution# Generate specific zonespython manage.py revolution --zones public admin# TypeScript onlypython manage.py revolution --typescript# Python onlypython manage.py revolution --python# Skip archive creationpython manage.py revolution --no-archive
Multithreaded Generation
# Use default multithreading (20 workers)python manage.py revolution --generate# Custom number of worker threadspython manage.py revolution --generate --max-workers 16# Disable multithreading for debuggingpython manage.py revolution --generate --no-multithreading# Performance optimization for large projectspython manage.py revolution --generate --max-workers 32 --clean
Validation & Testing
# Validate all zonespython manage.py revolution --validate-zones# Test schema generationpython manage.py revolution --test-schemas# Show URL patternspython manage.py revolution --show-urls# Check statuspython manage.py revolution --status
Advanced Usage
Performance Optimization
Multithreading Configuration
# settings.py - Optimize for your systemDJANGO_REVOLUTION = {'enable_multithreading': True,'max_workers': 20, # Adjust based on your CPU cores# ... other settings}
Worker Thread Guidelines
System Type | Recommended Workers | Use Case |
---|---|---|
Development | 4-8 | Local development |
CI/CD | 8-16 | Automated builds |
Production | 16-32 | High-performance servers |
Large Projects | 32-64 | Enterprise applications |
Memory Management
# Clean before generationpython manage.py revolution --clean --generate# Monitor memory usagepython manage.py revolution --generate --max-workers 8# Batch processing for large projectsfor zone in public admin internal; dopython manage.py revolution --zones $zone --cleandone
Zone-Specific Generation
# Generate only public zonepython manage.py revolution --zones public# Generate multiple specific zonespython manage.py revolution --zones public admin internal# Generate with custom outputpython manage.py revolution --zones public --output-dir /custom/path
Client Type Selection
# TypeScript onlypython manage.py revolution --typescript# Python onlypython manage.py revolution --python# Both (default)python manage.py revolution --typescript --python
Advanced Configuration
# settings.pyfrom django_revolution.app_config import ZoneConfig, MonorepoConfig, MonorepoSettings, get_revolution_configfrom pathlib import Pathzones = {'public': ZoneConfig(apps=['accounts', 'billing', 'payments'],title='Public API',description='Public endpoints',public=True,auth_required=False,version='v1'),'admin': ZoneConfig(apps=['admin_panel', 'analytics'],title='Admin API',description='Administrative endpoints',public=False,auth_required=True,version='v1')}# Configure multiple monoreposmonorepo_settings = MonorepoSettings(enabled=True,configurations=[MonorepoConfig(name="frontend",enabled=True,path=str(Path.cwd().parent / 'monorepo'),api_package_path='packages/api'),MonorepoConfig(name="mobile",enabled=True,path=str(Path.cwd().parent / 'mobile-monorepo'),api_package_path='packages/api-client'),])config = get_revolution_config(project_root=Path.cwd(), zones=zones, monorepo=monorepo_settings)
Environment-Specific Configuration
# settings/development.pyDJANGO_REVOLUTION = {'enable_multithreading': True,'max_workers': 8, # Lower for development'debug': True,# ... zones configuration}# settings/production.pyDJANGO_REVOLUTION = {'enable_multithreading': True,'max_workers': 32, # Higher for production'debug': False,# ... zones configuration}
Performance Monitoring
Generation Time Tracking
# Time the generation processtime python manage.py revolution --generate# Compare sequential vs multithreadedtime python manage.py revolution --generate --no-multithreadingtime python manage.py revolution --generate --max-workers 16
Memory Usage Monitoring
# Monitor memory usage during generationpython manage.py revolution --generate --max-workers 8 2>&1 | tee generation.log# Check for memory leakspython manage.py revolution --generate --clean
Worker Thread Optimization
# Test different worker countsfor workers in 4 8 16 32; doecho "Testing with $workers workers:"time python manage.py revolution --generate --max-workers $workers --cleandone
Testing & Validation
Zone Validation
# Validate all zonespython manage.py revolution --validate-zones# Expected output:# โ Zone 'public' is valid# โ Zone 'admin' is valid# ๐ All zones are valid!
Schema Testing
# Test schema generationpython manage.py revolution --test-schemas# Expected output:# โ Schema generated: public.yaml (14KB)# โ Schema generated: admin.yaml (33KB)# ๐ All schema tests passed!
URL Pattern Inspection
# Show URL patternspython manage.py revolution --show-urls# Expected output:# PUBLIC ZONE:# โข public_api/# โข schema/ -> public-schema# โข schema/swagger/ -> public-swagger
CI/CD Integration
GitHub Actions Example
# .github/workflows/generate-clients.ymlname: Generate API Clientson:push:branches: [main]pull_request:branches: [main]jobs:generate:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v3- name: Set up Pythonuses: actions/setup-python@v4with:python-version: '3.10'- name: Install dependenciesrun: |pip install poetrypoetry install- name: Generate API clientsrun: |poetry run python manage.py revolution --generate --max-workers 8 --clean- name: Upload generated clientsuses: actions/upload-artifact@v3with:name: api-clientspath: openapi/clients/
GitLab CI Example
# .gitlab-ci.ymlgenerate_clients:stage: buildimage: python:3.10script:- pip install poetry- poetry install- poetry run python manage.py revolution --generate --max-workers 8 --cleanartifacts:paths:- openapi/clients/expire_in: 1 week
Best Practices
Performance Optimization
- Use multithreading - Enable for multiple zones
- Optimize worker count - Match your CPU cores
- Clean regularly - Remove old generated files
- Monitor resources - Watch memory and CPU usage
- Batch processing - Generate zones separately if needed
Configuration Management
- Environment-specific configs - Different settings per environment
- Version control - Track configuration changes
- Validation - Always validate zones before generation
- Testing - Test schema generation regularly
- Documentation - Document zone configurations
CI/CD Integration
- Automated generation - Generate on every deployment
- Artifact management - Store generated clients as artifacts
- Performance monitoring - Track generation times
- Error handling - Proper error reporting and recovery
- Caching - Cache dependencies for faster builds