Documentation

Django Revolution

v1.0.13

Usage Guide - Django Revolution

Basic Usage

Generate Clients

# Interactive generation (recommended)
python manage.py revolution
# Generate specific zones
python manage.py revolution --zones public admin
# TypeScript only
python manage.py revolution --typescript
# Python only
python manage.py revolution --python
# Skip archive creation
python manage.py revolution --no-archive

Multithreaded Generation

# Use default multithreading (20 workers)
python manage.py revolution --generate
# Custom number of worker threads
python manage.py revolution --generate --max-workers 16
# Disable multithreading for debugging
python manage.py revolution --generate --no-multithreading
# Performance optimization for large projects
python manage.py revolution --generate --max-workers 32 --clean

Validation & Testing

# Validate all zones
python manage.py revolution --validate-zones
# Test schema generation
python manage.py revolution --test-schemas
# Show URL patterns
python manage.py revolution --show-urls
# Check status
python manage.py revolution --status

Advanced Usage

Performance Optimization

Multithreading Configuration

# settings.py - Optimize for your system
DJANGO_REVOLUTION = {
'enable_multithreading': True,
'max_workers': 20, # Adjust based on your CPU cores
# ... other settings
}

Worker Thread Guidelines

System TypeRecommended WorkersUse Case
Development4-8Local development
CI/CD8-16Automated builds
Production16-32High-performance servers
Large Projects32-64Enterprise applications

Memory Management

# Clean before generation
python manage.py revolution --clean --generate
# Monitor memory usage
python manage.py revolution --generate --max-workers 8
# Batch processing for large projects
for zone in public admin internal; do
python manage.py revolution --zones $zone --clean
done

Zone-Specific Generation

# Generate only public zone
python manage.py revolution --zones public
# Generate multiple specific zones
python manage.py revolution --zones public admin internal
# Generate with custom output
python manage.py revolution --zones public --output-dir /custom/path

Client Type Selection

# TypeScript only
python manage.py revolution --typescript
# Python only
python manage.py revolution --python
# Both (default)
python manage.py revolution --typescript --python

Advanced Configuration

# settings.py
from django_revolution.app_config import ZoneConfig, MonorepoConfig, MonorepoSettings, get_revolution_config
from pathlib import Path
zones = {
'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 monorepos
monorepo_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.py
DJANGO_REVOLUTION = {
'enable_multithreading': True,
'max_workers': 8, # Lower for development
'debug': True,
# ... zones configuration
}
# settings/production.py
DJANGO_REVOLUTION = {
'enable_multithreading': True,
'max_workers': 32, # Higher for production
'debug': False,
# ... zones configuration
}

Performance Monitoring

Generation Time Tracking

# Time the generation process
time python manage.py revolution --generate
# Compare sequential vs multithreaded
time python manage.py revolution --generate --no-multithreading
time python manage.py revolution --generate --max-workers 16

Memory Usage Monitoring

# Monitor memory usage during generation
python manage.py revolution --generate --max-workers 8 2>&1 | tee generation.log
# Check for memory leaks
python manage.py revolution --generate --clean

Worker Thread Optimization

# Test different worker counts
for workers in 4 8 16 32; do
echo "Testing with $workers workers:"
time python manage.py revolution --generate --max-workers $workers --clean
done

Testing & Validation

Zone Validation

# Validate all zones
python manage.py revolution --validate-zones
# Expected output:
# โœ… Zone 'public' is valid
# โœ… Zone 'admin' is valid
# ๐ŸŽ‰ All zones are valid!

Schema Testing

# Test schema generation
python 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 patterns
python 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.yml
name: Generate API Clients
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: |
pip install poetry
poetry install
- name: Generate API clients
run: |
poetry run python manage.py revolution --generate --max-workers 8 --clean
- name: Upload generated clients
uses: actions/upload-artifact@v3
with:
name: api-clients
path: openapi/clients/

GitLab CI Example

# .gitlab-ci.yml
generate_clients:
stage: build
image: python:3.10
script:
- pip install poetry
- poetry install
- poetry run python manage.py revolution --generate --max-workers 8 --clean
artifacts:
paths:
- openapi/clients/
expire_in: 1 week

Best Practices

Performance Optimization

  1. Use multithreading - Enable for multiple zones
  2. Optimize worker count - Match your CPU cores
  3. Clean regularly - Remove old generated files
  4. Monitor resources - Watch memory and CPU usage
  5. Batch processing - Generate zones separately if needed

Configuration Management

  1. Environment-specific configs - Different settings per environment
  2. Version control - Track configuration changes
  3. Validation - Always validate zones before generation
  4. Testing - Test schema generation regularly
  5. Documentation - Document zone configurations

CI/CD Integration

  1. Automated generation - Generate on every deployment
  2. Artifact management - Store generated clients as artifacts
  3. Performance monitoring - Track generation times
  4. Error handling - Proper error reporting and recovery
  5. Caching - Cache dependencies for faster builds

Next: CLI Reference ยท API Reference