diff --git a/gunicorn.conf.py b/gunicorn.conf.py new file mode 100644 index 0000000..dae09bd --- /dev/null +++ b/gunicorn.conf.py @@ -0,0 +1,18 @@ +"""Gunicorn configuration for INTERCEPT.""" + + +def post_worker_init(worker): + """Suppress noisy SystemExit tracebacks during gevent worker shutdown. + + When gunicorn receives SIGINT, the gevent worker's handle_quit() + calls sys.exit(0) inside a greenlet. Gevent treats SystemExit as + an error by default and prints a traceback. Adding it to NOT_ERROR + silences this harmless noise. + """ + try: + from gevent import get_hub + hub = get_hub() + if SystemExit not in hub.NOT_ERROR: + hub.NOT_ERROR = hub.NOT_ERROR + (SystemExit,) + except Exception: + pass diff --git a/start.sh b/start.sh index 567bcba..85e9922 100755 --- a/start.sh +++ b/start.sh @@ -126,6 +126,7 @@ if [[ "$HAS_GUNICORN" -eq 1 && "$HAS_GEVENT" -eq 1 ]]; then echo "[INTERCEPT] Listening on ${HOST}:${PORT}" GUNICORN_ARGS=( + -c "$SCRIPT_DIR/gunicorn.conf.py" -k gevent -w 1 --timeout 300