Troubleshooting
π§ Troubleshooting Guide
Welcome to SkysPy SupportThis comprehensive guide helps you diagnose and resolve issues quickly. Use the diagnostic flowcharts, quick fix tables, and detailed solutions to get back on track.
π― System Overview
SkysPy is a multi-component system. Understanding which component is affected speeds up troubleshooting.
flowchart TB
subgraph Frontend["π₯οΈ Frontend Layer"]
WEB[React Web App]
WS_CLIENT[Socket.IO Client]
end
subgraph API["β‘ API Layer"]
DJANGO[Django API Server]
DAPHNE[ASGI/Daphne]
end
subgraph Workers["βοΈ Background Processing"]
CELERY[Celery Workers]
BEAT[Celery Beat Scheduler]
end
subgraph Data["πΎ Data Layer"]
POSTGRES[(PostgreSQL)]
REDIS[(Redis)]
end
subgraph External["π External"]
ADSB[ADS-B Receiver]
ACARS[ACARS Decoder]
end
WEB --> DJANGO
WS_CLIENT --> DAPHNE
DJANGO --> POSTGRES
DJANGO --> REDIS
CELERY --> REDIS
CELERY --> POSTGRES
BEAT --> REDIS
CELERY --> ADSB
CELERY --> ACARS
π₯ Health Check Status
Quick Health CheckAlways start troubleshooting by checking system health:
curl -s http://localhost:8000/health | jq
Status Indicators
| Status | Badge | Meaning |
|---|---|---|
| Healthy | All services operational | |
| Degraded | Some services experiencing issues | |
| Unhealthy | Critical services down |
Service Status Reference
| Service Status | Badge | Description |
|---|---|---|
up | Service responding normally | |
down | Service unreachable | |
degraded | Responding with issues | |
unknown | Status cannot be determined |
π Diagnostic Flowchart
Use this flowchart to quickly identify your issue:
flowchart TD
START([π¨ Issue Detected]) --> Q1{Can you access<br/>the web interface?}
Q1 -->|No| WEB_ISSUE[π₯οΈ Frontend Issue]
Q1 -->|Yes| Q2{Is data loading?}
Q2 -->|No| Q3{Health check<br/>passing?}
Q2 -->|Yes| Q4{Real-time updates<br/>working?}
Q3 -->|No| API_ISSUE[β‘ API/Database Issue]
Q3 -->|Yes| DATA_ISSUE[π‘ ADS-B Connection Issue]
Q4 -->|No| WS_ISSUE[π Socket.IO Issue]
Q4 -->|Yes| Q5{Performance<br/>acceptable?}
Q5 -->|No| PERF_ISSUE[π’ Performance Issue]
Q5 -->|Yes| SUCCESS([β
System Healthy])
WEB_ISSUE --> WEB_FIX["Check nginx/frontend logs"]
API_ISSUE --> API_FIX["Check database & Redis"]
DATA_ISSUE --> DATA_FIX["Check ultrafeeder connection"]
WS_ISSUE --> WS_FIX["Check Redis channel layer"]
PERF_ISSUE --> PERF_FIX["Review resource usage"]
π Quick Diagnostic Checklist
Pro TipRun these commands in order. Most issues are caught in the first 3 steps.
| Step | Command | What It Checks |
|---|---|---|
| 1οΈβ£ | curl -s http://localhost:8000/health | jq | Overall system health |
| 2οΈβ£ | docker compose ps | Container status |
| 3οΈβ£ | docker compose logs --tail=50 api | Recent API errors |
| 4οΈβ£ | docker compose exec api ping postgres | Database connectivity |
| 5οΈβ£ | docker compose exec redis redis-cli ping | Redis connectivity |
| 6οΈβ£ | curl -s http://localhost:8000/api/v1/system/status | jq | Detailed system status |
π Common Issues & Solutions
π΄ Connection Problems
β API Server Cannot Connect to Database
Symptoms
- π« API returns 500 errors
- π Health check shows
database: down - π Logs show
OperationalError: could not connect to server
Diagnostic Flowchart
flowchart TD
A[Database Connection Error] --> B{Is PostgreSQL<br/>container running?}
B -->|No| C[Start PostgreSQL]
B -->|Yes| D{Can you ping<br/>postgres host?}
D -->|No| E[Check Docker network]
D -->|Yes| F{Are credentials<br/>correct?}
F -->|No| G[Fix DATABASE_URL]
F -->|Yes| H{Max connections<br/>exceeded?}
H -->|Yes| I[Increase max_connections]
H -->|No| J[Check PostgreSQL logs]
C --> K([π Restart & Retry])
E --> K
G --> K
I --> K
J --> KQuick Fix Commands
| Issue | Command |
|---|---|
| Check if running | docker compose ps postgres |
| View logs | docker compose logs postgres |
| Test connection | docker compose exec postgres psql -U adsb -d adsb -c "SELECT 1;" |
| Check network | docker compose exec api ping postgres |
| Verify DATABASE_URL | docker compose exec api python -c "from django.conf import settings; print(settings.DATABASE_URL)" |
Solutions
-
Verify PostgreSQL is running:
docker compose ps postgres docker compose logs postgres -
Check connection parameters:
docker compose exec api python -c "from django.conf import settings; print(settings.DATABASE_URL)" -
Test direct connection:
docker compose exec postgres psql -U adsb -d adsb -c "SELECT 1;" -
Review connection timeout settings:
# In settings.py, connection timeout is set to 10 seconds 'OPTIONS': { 'connect_timeout': 10, }
Common Causes
- PostgreSQL container not fully initialized
- Incorrect
DATABASE_URLenvironment variable- Network isolation between containers
- PostgreSQL max connections exceeded
β Redis Connection Refused
Symptoms
- π Socket.IO connections fail
- βοΈ Celery workers cannot start
- πΎ Cache operations fail
- π Health check shows
cache: down
Quick Fix Commands
| Issue | Command |
|---|---|
| Check if running | docker compose ps redis |
| View logs | docker compose logs redis |
| Test connection | docker compose exec redis redis-cli ping |
| Check memory | docker compose exec redis redis-cli info memory |
| Verify REDIS_URL | docker compose exec api python -c "from django.conf import settings; print(settings.REDIS_URL)" |
Solutions
-
Verify Redis is running:
docker compose ps redis docker compose logs redis -
Test Redis connection:
docker compose exec redis redis-cli ping # Expected: PONG -
Verify Redis memory:
docker compose exec redis redis-cli info memory
Environment VariableREDIS_URL=redis://redis:6379/0
β Cannot Connect to Ultrafeeder/ADS-B Receiver
Symptoms
- βοΈ No aircraft appearing in the interface
- π Status shows
adsb_online: false - π Logs show connection errors to ultrafeeder
Quick Fix Commands
| Issue | Command |
|---|---|
| Test ultrafeeder | docker compose exec api curl -s http://ultrafeeder:80/data/aircraft.json | head -c 200 |
| Check polling task | docker compose logs -f celery-worker | grep -E "(poll_aircraft|ultrafeeder)" |
| Test from host | curl -s http://localhost:8080/data/aircraft.json |
Solutions
-
Verify ultrafeeder is accessible:
docker compose exec api curl -s http://ultrafeeder:80/data/aircraft.json | head -c 200 -
Check environment configuration:
ULTRAFEEDER_HOST=ultrafeeder ULTRAFEEDER_PORT=80 -
Review polling task logs:
docker compose logs -f celery-worker | grep -E "(poll_aircraft|ultrafeeder)"
π‘ Database Issues
β οΈ Database Migrations Failing
Symptoms
- π« API fails to start
- π Logs show
django.db.utils.ProgrammingError - β Missing tables or columns
Quick Fix Commands
| Action | Command |
|---|---|
| Run migrations | docker compose exec api python manage.py migrate |
| Check status | docker compose exec api python manage.py showmigrations |
| Reset app migrations | docker compose exec api python manage.py migrate skyspy zero && docker compose exec api python manage.py migrate skyspy |
| Generate migrations | docker compose exec api python manage.py makemigrations |
β οΈ Database Performance Degradation
Symptoms
- π’ Slow API responses
- π High database CPU usage
- β±οΈ Query timeouts
Quick Fix Commands
| Action | Command |
|---|---|
| Check table sizes | See SQL query below |
| Run VACUUM | docker compose exec postgres psql -U adsb -d adsb -c "VACUUM ANALYZE;" |
| List indexes | docker compose exec api python manage.py dbshell then \di |
| Monitor queries | See SQL query below |
| Enable RPi settings | DJANGO_SETTINGS_MODULE=skyspy.settings_rpi |
SQL Queries
Check table sizes:
SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC
LIMIT 10;Monitor active queries:
SELECT pid, now() - pg_stat_activity.query_start AS duration, query
FROM pg_stat_activity
WHERE state = 'active'
ORDER BY duration DESC;β οΈ Database Disk Space Full
Symptoms
- βοΈ Write operations fail
- π Logs show
No space left on device
Quick Fix Commands
| Action | Command |
|---|---|
| Check disk usage | docker compose exec postgres df -h /var/lib/postgresql/data |
| Run cleanup | See Python command below |
| Full vacuum | docker compose exec postgres vacuumdb -U adsb -d adsb --full --analyze |
Cleanup Command
docker compose exec api python manage.py shell -c "
from skyspy.tasks.cleanup import run_all_cleanup_tasks
run_all_cleanup_tasks()
"
Manual Truncation (Use with Caution)-- Only if you're sure you want to delete data DELETE FROM skyspy_aircraftsighting WHERE timestamp < NOW() - INTERVAL '7 days';
π Socket.IO Issues
π Socket.IO Connections Dropping Frequently
Symptoms
- βοΈ Aircraft disappear intermittently
- π₯οΈ Browser console shows Socket.IO errors
- π₯ Users report real-time updates stopping
Diagnostic Flowchart
flowchart TD
A[Socket.IO Dropping] --> B{Can you connect<br/>to Socket.IO endpoint?}
B -->|No| C{Is API server<br/>running?}
B -->|Yes| D{Connections<br/>stable locally?}
C -->|No| E[Start API server]
C -->|Yes| F[Check reverse proxy config]
D -->|Yes| G[Check network/firewall]
D -->|No| H{Redis channel<br/>layer working?}
H -->|No| I[Check Redis connection]
H -->|Yes| J[Check rate limits]
E --> K([π Retry])
F --> K
G --> K
I --> K
J --> KQuick Fix Commands
| Action | Command |
|---|---|
| Check channel layer | See Python command below |
| View ASGI logs | docker compose logs -f api | grep -E "(Socket\.IO|channels)" |
| Test Socket.IO endpoint | See browser console test below |
Test Channel Layer
docker compose exec api python -c "
from channels.layers import get_channel_layer
import asyncio
layer = get_channel_layer()
print('Channel layer:', layer)
"Browser Console Test
import { io } from 'socket.io-client';
const socket = io('http://localhost:8000/aircraft', {
path: '/socket.io/',
transports: ['websocket', 'polling']
});
socket.on('connect', () => console.log('β
Connected'));
socket.on('connect_error', (e) => console.error('β Error:', e));
socket.on('disconnect', (reason) => console.log('π Disconnected:', reason));
Rate LimitsWS_RATE_LIMITS = { 'aircraft:update': 10, # Max 10 Hz 'aircraft:position': 5, # Max 5 Hz 'stats:update': 0.5, # Max 0.5 Hz }
Auto-ReconnectionThe frontend implements automatic reconnection with exponential backoff:
- Initial delay: 1 second
- Maximum delay: 30 seconds
- Heartbeat ping every 30 seconds with 10-second timeout
π Socket.IO Authentication Failures
Symptoms
- π Socket.IO disconnects with authentication errors
- π Logs show Socket.IO auth error
Error Code Reference
| Code | Badge | Meaning | Solution |
|---|---|---|---|
4001 | Authentication required | Pass JWT token | |
4003 | Token expired | Refresh token | |
4004 | Invalid token | Re-authenticate |
Solutions
-
Check AUTH_MODE setting:
# public: No auth required # private: Auth required for all # hybrid: Feature-based auth (default) AUTH_MODE=hybrid -
Verify JWT token is being passed:
// Token should be passed in Socket.IO auth or query params const socket = io('http://host/aircraft', { path: '/socket.io/', auth: { token: '<jwt_token>' }, query: { token: '<jwt_token>' } }); -
Check token expiration:
JWT_ACCESS_TOKEN_LIFETIME_MINUTES=60
π΄ Performance Problems
π’ High CPU Usage on Raspberry Pi
Symptoms
- π» System becomes unresponsive
- βοΈ Aircraft updates lag
- π‘οΈ Temperature warnings
Quick Fix Table
| Setting | Recommended Value | Purpose |
|---|---|---|
DJANGO_SETTINGS_MODULE | skyspy.settings_rpi | RPi-optimized config |
POLLING_INTERVAL | 3 | Reduce poll frequency |
--concurrency | 2 | Limit Celery workers |
TRANSCRIPTION_ENABLED | False | Disable audio processing |
PHOTO_AUTO_DOWNLOAD | False | Disable photo fetching |
Solutions
-
Use RPi-optimized settings:
DJANGO_SETTINGS_MODULE=skyspy.settings_rpi -
Reduce polling frequency:
POLLING_INTERVAL=3 # Default is 2 seconds -
Limit Celery concurrency:
# In docker-compose.yml command: celery -A skyspy worker -l info --concurrency=2 -
Monitor resource usage:
docker stats
πΎ Memory Exhaustion
Symptoms
- π OOMKilled containers
- π Swap usage high
- π Services restarting
Quick Fix Table
| Solution | Setting/Command |
|---|---|
| Check usage | docker stats --no-stream |
| Set memory limits | See docker-compose.yml example |
| Reduce cache size | MAX_SEEN_AIRCRAFT=5000 |
| Manual cleanup | cleanup_memory_cache task |
Docker Compose Memory Limits
services:
api:
deploy:
resources:
limits:
memory: 512M
Bounded Caches# In services/cache.py - enabled by default aircraft_info_cache = BoundedCache(maxsize=5000) route_cache = BoundedCache(maxsize=1000)
π Slow API Responses
Symptoms
- β±οΈ API requests taking > 1 second
- β Timeouts on complex queries
Quick Fix Table
| Action | How |
|---|---|
| Enable Debug Toolbar | DEBUG=True (dev only) |
| Check query counts | See Python command below |
| Check cache stats | GET /api/v1/system/status |
| Increase connection pooling | CONN_MAX_AGE=60 |
Check Query Counts
docker compose exec api python manage.py shell -c "
from django.db import connection
# Make API request
print(len(connection.queries))
"
Performance Tips
- Use
select_related()andprefetch_related()in querysets- Review N+1 query issues
- Enable query logging in development
π οΈ Debug Command Reference
Django Management Commands
| Command | Purpose | Badge |
|---|---|---|
python manage.py check | Validate Django config | |
python manage.py dbshell | Database shell | |
python manage.py shell | Django shell | |
python manage.py show_urls | List all URL routes | |
python manage.py sync_celery_tasks | Sync Celery tasks to DB |
# Full commands with docker compose
docker compose exec api python manage.py check
docker compose exec api python manage.py dbshell
docker compose exec api python manage.py shell
docker compose exec api python manage.py show_urls
docker compose exec api python manage.py sync_celery_tasksCelery Debugging
| Command | Purpose |
|---|---|
celery -A skyspy inspect registered | Check registered tasks |
celery -A skyspy inspect active | View active tasks |
celery -A skyspy inspect scheduled | View scheduled tasks |
celery -A skyspy purge | Purge pending tasks |
celery -A skyspy events | Monitor tasks real-time |
# Full commands with docker compose
docker compose exec celery-worker celery -A skyspy inspect registered
docker compose exec celery-worker celery -A skyspy inspect active
docker compose exec celery-worker celery -A skyspy inspect scheduled
docker compose exec celery-worker celery -A skyspy purge
docker compose exec celery-worker celery -A skyspy eventsNetwork Debugging
| Command | Purpose |
|---|---|
nslookup postgres | Test DNS resolution |
nc -zv postgres 5432 | Check port connectivity |
netstat -tuln | List network connections |
# Full commands with docker compose
docker compose exec api nslookup postgres
docker compose exec api nslookup redis
docker compose exec api nc -zv postgres 5432
docker compose exec api nc -zv redis 6379
docker compose exec api netstat -tulnRedis Debugging
| Command | Purpose |
|---|---|
redis-cli monitor | Monitor commands real-time |
redis-cli keys "skyspy*" | Check key patterns |
redis-cli pubsub channels | View channel subscribers |
redis-cli --bigkeys | Memory usage by key pattern |
# Full commands with docker compose
docker compose exec redis redis-cli monitor
docker compose exec redis redis-cli keys "skyspy*"
docker compose exec redis redis-cli pubsub channels
docker compose exec redis redis-cli --bigkeysπ Log Analysis
Log Configuration
Environment VariablesDJANGO_LOG_LEVEL=INFO # Django framework logs DEBUG=False # Set True for verbose output
Logger Reference
| Logger | Purpose | Default Level | Badge |
|---|---|---|---|
django | Django framework | INFO | |
skyspy | Application code | DEBUG (if DEBUG=True) | |
celery | Celery workers | INFO |
Log Commands
| Action | Command |
|---|---|
| All services | docker compose logs -f |
| Specific service | docker compose logs -f api |
| Filter errors | docker compose logs -f api | grep -E "(ERROR|WARNING)" |
| Last N lines | docker compose logs --tail=100 api |
| Since timestamp | docker compose logs --since="2024-01-01T00:00:00" api |
Common Log Patterns
Successful Aircraft PollINFO skyspy.tasks.aircraft Polled 47 aircraft in 0.12s
Database Connection IssueERROR django.db.backends OperationalError: could not connect to server
Socket.IO ConnectionINFO skyspy.socketio Socket.IO connected: specific.ABC123, topics: ['all']
Celery Task FailureERROR celery.app.trace Task skyspy.tasks.aircraft.poll_aircraft raised unexpected exception
Sentry Integration
Production Error TrackingConfigure Sentry for comprehensive error monitoring:
SENTRY_DSN=https://[email protected]/project SENTRY_ENVIRONMENT=production SENTRY_TRACES_SAMPLE_RATE=0.1 # 10% of transactions SENTRY_PROFILES_SAMPLE_RATE=0.1
Sentry automatically captures:
- π Unhandled exceptions
- π Performance traces
- βοΈ Celery task failures
- πΎ Database query timing
π₯ Health Check Endpoints
GET /health
Simple health check for load balancers and monitoring systems.
{
"status": "healthy",
"services": {
"database": {
"status": "up",
"latency_ms": 1.23
},
"cache": {
"status": "up"
},
"celery": {
"status": "up"
},
"libacars": {
"status": "up",
"circuit_state": "closed",
"healthy": true
}
},
"timestamp": "2024-01-15T12:00:00Z"
}GET /api/v1/system/status
Comprehensive system status including statistics.
{
"version": "2.6.0",
"adsb_online": true,
"aircraft_count": 47,
"total_sightings": 125000,
"total_sessions": 8500,
"active_rules": 5,
"safety_monitoring_enabled": true,
"safety_tracked_aircraft": 12,
"notifications_configured": true,
"redis_enabled": true,
"socketio_connections": 3,
"acars_enabled": true,
"acars_running": true,
"polling_interval_seconds": 2,
"celery_running": true,
"celery_tasks": [
"poll-aircraft-every-2s",
"cleanup-sessions-every-5m"
],
"location": {
"latitude": 47.9377,
"longitude": -121.9687
},
"antenna": {
"max_range_nm": 250.5,
"coverage_percentage": 85.2
},
"libacars": {
"available": true,
"stats": {
"decoded": 1500,
"failed": 12
}
}
}GET /api/v1/system/info
API information and endpoint documentation.
GET /metrics (Prometheus)
Prometheus MetricsEnable with
PROMETHEUS_ENABLED=True
Metrics Include:
- π Request counts and latencies
- πΎ Database connection pool stats
- π― Cache hit/miss rates
- βοΈ Celery task execution times
- π‘ libacars decoding statistics
β FAQ
π§ General
How do I reset everything and start fresh?
Remove all containers and volumes:
docker compose down -v
docker compose up -d
WarningThis deletes all data including aircraft history.
How do I backup my database?
Backup:
docker compose exec postgres pg_dump -U adsb adsb > backup.sqlRestore:
cat backup.sql | docker compose exec -T postgres psql -U adsb adsbHow do I update to a new version?
docker compose pull
docker compose up -d
docker compose exec api python manage.py migrateπ Authentication
I forgot the admin password. How do I reset it?
docker compose exec api python manage.py changepassword adminOr create a new superuser:
docker compose exec api python manage.py createsuperuserHow do I disable authentication for testing?
Set AUTH_MODE=public in your environment:
AUTH_MODE=public
Security WarningNever use public mode in production.
Why am I getting 401 Unauthorized errors?
Check that:
- β Your JWT token is valid and not expired
- β
The Authorization header format is correct:
Authorization: Bearer <token> - β
AUTH_MODE is not set to
privatewithout providing credentials - β
API keys are enabled if using
X-API-Keyheader
β‘ Performance
How many aircraft can SkysPy track?
| Hardware | RAM | Capacity |
|---|---|---|
| Standard server | 4GB+ | 500+ aircraft (full features), 1000+ (optimized) |
| Raspberry Pi | 1-2GB | 200-300 aircraft (RPi settings) |
Why is my Raspberry Pi running slow?
Use the RPi-optimized settings:
DJANGO_SETTINGS_MODULE=skyspy.settings_rpi
POLLING_INTERVAL=3Also consider:
- β Disabling transcription
- β¬οΈ Reducing Celery worker concurrency
- β Disabling auto photo downloads
How do I reduce database storage usage?
Adjust data retention settings:
# In cleanup task settings
DATA_RETENTION_DAYS=7 # Default is 30Or manually clean old data:
docker compose exec api python manage.py shell -c "
from skyspy.tasks.cleanup import cleanup_old_sightings
cleanup_old_sightings(days=7)
"π Socket.IO
Why do I see "Socket.IO connection failed" in the console?
Common causes:
- π CORS issues: Ensure
CORS_ALLOWED_ORIGINSincludes your frontend URL - π Reverse proxy: Configure Socket.IO proxying in nginx/traefik
- π₯ Firewall: Ensure Socket.IO port is accessible
For nginx, add:
location /socket.io/ {
proxy_pass http://api:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}How do I test Socket.IO connectivity?
Using socket.io-client:
# Install socket.io-client
npm install -g socket.io-client
# Test in Node.js
node -e "const io = require('socket.io-client'); \
const socket = io('http://localhost:8000/aircraft', {path: '/socket.io/'}); \
socket.on('connect', () => console.log('Connected'));"Using browser console:
import { io } from 'socket.io-client';
const socket = io('http://localhost:8000/aircraft', {
path: '/socket.io/'
});
socket.on('connect', () => console.log('Connected'));
socket.on('aircraft:update', (data) => console.log('Update:', data));π‘ ACARS
ACARS messages are not appearing. What should I check?
| Check | Expected Value |
|---|---|
ACARS_ENABLED | True |
ACARS_PORT | 5555 |
VDLM2_PORT | 5556 |
View ACARS logs:
docker compose logs -f api | grep -i acarsHow do I decode ACARS messages locally?
SkysPy uses libacars for enhanced decoding. Check status:
curl -s http://localhost:8000/health | jq '.services.libacars'π External Services
How do I enable weather data (METAR/TAF)?
Configure one of the weather APIs:
AVWX (free, unlimited basic requests):
AVWX_ENABLED=True
AVWX_API_KEY=your-key # Optional but recommendedCheckWX (free tier: 3000/day):
CHECKWX_ENABLED=True
CHECKWX_API_KEY=your-keyWhy are aircraft photos not loading?
Check photo cache settings:
PHOTO_CACHE_ENABLED=True
PHOTO_AUTO_DOWNLOAD=TrueCheck the cache status:
docker compose exec api python manage.py shell -c "
from skyspy.services.cache import photo_cache
print(photo_cache.get_stats())
"
Photos are fetched from planespotters.net with rate limiting.
How do I configure S3 for photo/audio storage?
S3_ENABLED=True
S3_BUCKET=your-bucket
S3_REGION=us-east-1
S3_ACCESS_KEY=your-key
S3_SECRET_KEY=your-secret
S3_PREFIX=aircraft-photosFor S3-compatible storage (MinIO, Backblaze B2):
S3_ENDPOINT_URL=https://s3.example.comπ Support Resources
π Documentation Links
| Resource | Link | Description |
|---|---|---|
| π Swagger UI | /api/docs/ | Interactive API documentation |
| π OpenAPI Schema | /api/schema/ | Machine-readable API spec |
| π ReDoc | /api/redoc/ | Alternative API docs |
π Community Resources
| Platform | Purpose |
|---|---|
| π GitHub Issues | Report bugs and feature requests |
| π¬ GitHub Discussions | Ask questions and share configurations |
| π¬ Discord/Slack | Real-time community support (if available) |
π Collecting Debug Information
When reporting issues, include:
-
System Information:
docker compose exec api python -c " import sys, platform, django print(f'Python: {sys.version}') print(f'Platform: {platform.platform()}') print(f'Django: {django.get_version()}') " -
Configuration (sanitized):
docker compose exec api env | grep -E "^(DEBUG|AUTH_MODE|POLLING|SAFETY)" | sort -
Health Check Output:
curl -s http://localhost:8000/health | jq -
Relevant Logs:
docker compose logs --tail=200 api celery-worker -
Error Messages: Include full stack traces and error messages.
Still Need Help?If you've tried the solutions above and still have issues:
- π Search existing GitHub issues
- π Create a new issue with debug information
- π¬ Join the community discussion
We're here to help! π
Updated 27 days ago