mirror of
https://github.com/Dispatcharr/Dispatcharr.git
synced 2026-07-17 16:50:53 +00:00
66 lines
2.4 KiB
INI
66 lines
2.4 KiB
INI
[uwsgi]
|
|
; Modular deployment mode - external PostgreSQL, Redis, and Celery
|
|
; Remove file creation commands since we're not logging to files anymore
|
|
; exec-pre = mkdir -p /data/logs
|
|
; exec-pre = touch /data/logs/uwsgi.log
|
|
; exec-pre = chmod 666 /data/logs/uwsgi.log
|
|
|
|
; Redis wait + flush is handled by the entrypoint in modular mode
|
|
; (uWSGI exec-pre runs under 'su -' which strips Docker env vars)
|
|
|
|
; Start Daphne for WebSocket support (required for real-time features)
|
|
; Redis and Celery run in separate containers in modular mode
|
|
attach-daemon = daphne -b 0.0.0.0 -p 8001 dispatcharr.asgi:application
|
|
|
|
# Core settings
|
|
chdir = /app
|
|
module = dispatcharr.wsgi:application
|
|
virtualenv = /dispatcharrpy
|
|
master = true
|
|
env = DJANGO_SETTINGS_MODULE=dispatcharr.settings
|
|
env = USE_NGINX_ACCEL=true
|
|
socket = /app/uwsgi.sock
|
|
chmod-socket = 777
|
|
vacuum = true
|
|
die-on-term = true
|
|
static-map = /static=/app/static
|
|
|
|
# Worker management
|
|
workers = 4
|
|
|
|
# Optimize for streaming
|
|
http = 0.0.0.0:5656
|
|
http-keepalive = 1
|
|
buffer-size = 65536 # Increase buffer for large payloads
|
|
post-buffering = 4096 # Reduce buffering for real-time streaming
|
|
http-timeout = 600 # Prevent disconnects from long streams
|
|
socket-timeout = 600 # Prevent write timeouts when client buffers
|
|
lazy-apps = true # Improve memory efficiency
|
|
|
|
# Async mode (use gevent for high concurrency)
|
|
gevent = 400 # Each unused greenlet costs ~2-4KB of memory
|
|
# Higher values have minimal performance impact when idle, but provide capacity for traffic spikes
|
|
# If memory usage becomes an issue, reduce this value
|
|
|
|
# Patch the stdlib (socket, threading, time, ...) before any app code
|
|
# loads so blocking calls yield to the gevent hub. Without this, a single
|
|
# blocking requests / DNS call freezes every greenlet on the
|
|
# worker. psycopg3 uses Python's socket layer, so no additional patching is needed.
|
|
gevent-early-monkey-patch = true
|
|
import = dispatcharr.gevent_patch
|
|
|
|
# Performance tuning
|
|
thunder-lock = true
|
|
log-4xx = true
|
|
log-5xx = true
|
|
disable-logging = false
|
|
|
|
# Logging configuration
|
|
# Enable console logging (stdout)
|
|
log-master = true
|
|
# Enable strftime formatting for timestamps
|
|
logformat-strftime = true
|
|
log-date = %%Y-%%m-%%d %%H:%%M:%%S,000
|
|
# Use formatted time with environment variable for log level
|
|
log-format = %(ftime) $(DISPATCHARR_LOG_LEVEL) uwsgi.requests Worker ID: %(wid) %(method) %(status) %(uri) %(msecs)ms
|
|
log-buffering = 1024 # Add buffer size limit for logging
|