UWSGI_PYTHON312(1)

πŸ“¦ version 2.0.24, in ubuntu noble

✨ uwsgi_python312 ✨

okay bestie, gather round, because this is the manual page for uwsgi_python312 β€” a fast (pure C), self-healing, developer-friendly WSGI server. yes. all of that. at once. it's giving main character energy and it hasn't even started talking yet πŸ’…


πŸ’– NAME πŸ’–

uwsgi_python312 β€” fast (pure C), self-healing, developer-friendly WSGI server

πŸ¦‹ SYNOPSIS πŸ¦‹

uwsgi-core-local [options...]

πŸŽ€ DESCRIPTION πŸŽ€

so like, this is a long list of options and I'm not skipping a single one, because you deserve the whole thing, periodt. let's go 🌈

πŸ”Œ sockets & protocols πŸ”Œ

  • -s, --socket β€” bind to the specified UNIX/TCP socket using default protocol
  • -s, --uwsgi-socket β€” bind to the specified UNIX/TCP socket using uwsgi protocol
  • --suwsgi-socket β€” bind to the specified UNIX/TCP socket using uwsgi protocol over SSL
  • --ssl-socket β€” bind to the specified UNIX/TCP socket using uwsgi protocol over SSL
  • --http-socket β€” bind to the specified UNIX/TCP socket using HTTP protocol
  • --http-socket-modifier1 β€” force the specified modifier1 when using HTTP protocol
  • --http-socket-modifier2 β€” force the specified modifier2 when using HTTP protocol
  • --http11-socket β€” bind to the specified UNIX/TCP socket using HTTP 1.1 (Keep-Alive) protocol
  • --https-socket β€” bind to the specified UNIX/TCP socket using HTTPS protocol
  • --https-socket-modifier1 β€” force the specified modifier1 when using HTTPS protocol
  • --https-socket-modifier2 β€” force the specified modifier2 when using HTTPS protocol
  • --fastcgi-socket β€” bind to the specified UNIX/TCP socket using FastCGI protocol
  • --fastcgi-nph-socket β€” bind to the specified UNIX/TCP socket using FastCGI protocol (nph mode)
  • --fastcgi-modifier1 β€” force the specified modifier1 when using FastCGI protocol
  • --fastcgi-modifier2 β€” force the specified modifier2 when using FastCGI protocol
  • --scgi-socket β€” bind to the specified UNIX/TCP socket using SCGI protocol
  • --scgi-nph-socket β€” bind to the specified UNIX/TCP socket using SCGI protocol (nph mode)
  • --scgi-modifier1 β€” force the specified modifier1 when using SCGI protocol
  • --scgi-modifier2 β€” force the specified modifier2 when using SCGI protocol
  • --raw-socket β€” bind to the specified UNIX/TCP socket using RAW protocol
  • --raw-modifier1 β€” force the specified modifier1 when using RAW protocol
  • --raw-modifier2 β€” force the specified modifier2 when using RAW protocol
  • --puwsgi-socket β€” bind to the specified UNIX/TCP socket using persistent uwsgi protocol (puwsgi)
  • --protocol β€” force the specified protocol for default sockets
  • --socket-protocol β€” force the specified protocol for default sockets
  • --shared-socket β€” create a shared socket for advanced jailing or ipc
  • --undeferred-shared-socket β€” create a shared socket for advanced jailing or ipc (undeferred mode)

πŸ‘― workers, timeouts & harakiri πŸ‘―

  • -p, --processes β€” spawn the specified number of workers/processes
  • -p, --workers β€” spawn the specified number of workers/processes
  • --thunder-lock β€” serialize accept() usage (if possible)
  • -t, --harakiri β€” set harakiri timeout
  • --harakiri-verbose β€” enable verbose mode for harakiri
  • --harakiri-graceful-timeout β€” interval between graceful harakiri attempt and a sigkill
  • --harakiri-graceful-signal β€” use this signal instead of sigterm for graceful harakiri attempts
  • --harakiri-queue-threshold β€” only trigger harakiri if queue is greater than this threshold
  • --harakiri-no-arh β€” do not enable harakiri during after-request-hook
  • --no-harakiri-arh β€” do not enable harakiri during after-request-hook
  • --no-harakiri-after-req-hook β€” do not enable harakiri during after-request-hook
  • --backtrace-depth β€” set backtrace depth
  • --mule-harakiri β€” set harakiri timeout for mule tasks

πŸ“œ configs & options magic πŸ“œ

  • -x, --xmlconfig β€” load config from xml file
  • -x, --xml β€” load config from xml file
  • --config β€” load configuration using the pluggable system
  • --fallback-config β€” re-exec uwsgi with the specified config when exit code is 1
  • --strict β€” enable strict mode (placeholder cannot be used)
  • --skip-zero β€” skip check of file descriptor 0
  • --skip-atexit β€” skip atexit hooks (ignored by the master)
  • --skip-atexit-teardown β€” skip atexit teardown (ignored by the master)
  • -S, --set β€” set a placeholder or an option
  • --set-placeholder β€” set a placeholder
  • --set-ph β€” set a placeholder
  • --get β€” print the specified option value and exit
  • --declare-option β€” declare a new uWSGI custom option
  • --declare-option2 β€” declare a new uWSGI custom option (non-immediate)
  • --resolve β€” place the result of a dns query in the specified placeholder, sytax: placeholder=name (immediate option)

🧠 opt logic (the if/for girlies) 🧠

  • --for β€” (opt logic) for cycle
  • --for-glob β€” (opt logic) for cycle (expand glob)
  • --for-times β€” (opt logic) for cycle (expand the specified num to a list starting from 1)
  • --for-readline β€” (opt logic) for cycle (expand the specified file to a list of lines)
  • --endfor β€” (opt logic) end for cycle
  • --end-for β€” (opt logic) end for cycle
  • --if-opt β€” (opt logic) check for option
  • --if-not-opt β€” (opt logic) check for option
  • --if-env β€” (opt logic) check for environment variable
  • --if-not-env β€” (opt logic) check for environment variable
  • --ifenv β€” (opt logic) check for environment variable
  • --if-reload β€” (opt logic) check for reload
  • --if-not-reload β€” (opt logic) check for reload
  • --if-hostname β€” (opt logic) check for hostname
  • --if-not-hostname β€” (opt logic) check for hostname
  • --if-hostname-match β€” (opt logic) try to match hostname against a regular expression
  • --if-not-hostname-match β€” (opt logic) try to match hostname against a regular expression
  • --if-exists β€” (opt logic) check for file/directory existence
  • --if-not-exists β€” (opt logic) check for file/directory existence
  • --ifexists β€” (opt logic) check for file/directory existence
  • --if-plugin β€” (opt logic) check for plugin
  • --if-not-plugin β€” (opt logic) check for plugin
  • --ifplugin β€” (opt logic) check for plugin
  • --if-file β€” (opt logic) check for file existance
  • --if-not-file β€” (opt logic) check for file existance
  • --if-dir β€” (opt logic) check for directory existance
  • --if-not-dir β€” (opt logic) check for directory existance
  • --ifdir β€” (opt logic) check for directory existance
  • --if-directory β€” (opt logic) check for directory existance
  • --endif β€” (opt logic) end if
  • --end-if β€” (opt logic) end if

🚦 lists & error handling 🚦

  • --blacklist β€” set options blacklist context
  • --end-blacklist β€” clear options blacklist context
  • --whitelist β€” set options whitelist context
  • --end-whitelist β€” clear options whitelist context
  • --ignore-sigpipe β€” do not report (annoying) SIGPIPE
  • --ignore-write-errors β€” do not report (annoying) write()/writev() errors
  • --write-errors-tolerance β€” set the maximum number of allowed write errors (default: no tolerance)
  • --write-errors-exception-only β€” only raise an exception on write errors giving control to the app itself
  • --disable-write-exception β€” disable exception generation on write()/writev()

🧩 templating & includes 🧩

  • --inherit β€” use the specified file as config template
  • --include β€” include the specified file as immediate configuration
  • --inject-before β€” inject a text file before the config file (advanced templating)
  • --inject-after β€” inject a text file after the config file (advanced templating)

πŸ› οΈ instance management πŸ› οΈ

  • -d, --daemonize β€” daemonize uWSGI
  • --daemonize2 β€” daemonize uWSGI after app loading
  • --stop β€” stop an instance
  • --reload β€” reload an instance
  • --pause β€” pause an instance
  • --suspend β€” suspend an instance
  • --resume β€” resume an instance
  • --connect-and-read β€” connect to a socket and wait for data from it
  • --extract β€” fetch/dump any supported address to stdout

βš™οΈ tuning & internals βš™οΈ

  • -l, --listen β€” set the socket listen queue size
  • -v, --max-vars β€” set the amount of internal iovec/vars structures
  • --max-apps β€” set the maximum number of per-worker applications
  • -b, --buffer-size β€” set internal buffer size
  • -m, --memory-report β€” enable memory report
  • --profiler β€” enable the specified profiler
  • -c, --cgi-mode β€” force CGI-mode for plugins supporting it
  • -a, --abstract-socket β€” force UNIX socket in abstract mode (Linux only)
  • -C, --chmod-socket β€” chmod-socket
  • -C, --chmod β€” chmod-socket
  • --chown-socket β€” chown unix sockets
  • --umask β€” set umask
  • --freebind β€” put socket in freebind mode
  • --map-socket β€” map sockets to specific workers
  • -T, --enable-threads β€” enable threads
  • --no-threads-wait β€” do not wait for threads cancellation on quit/reload

πŸ’« process names & master πŸ’«

  • --auto-procname β€” automatically set processes name to something meaningful
  • --procname-prefix β€” add a prefix to the process names
  • --procname-prefix-spaced β€” add a spaced prefix to the process names
  • --procname-append β€” append a string to process names
  • --procname β€” set process names
  • --procname-master β€” set master process name
  • -i, --single-interpreter β€” do not use multiple interpreters (where available)
  • --need-app β€” exit if no app can be loaded
  • -M, --master β€” enable master process
  • --honour-stdin β€” do not remap stdin to /dev/null

πŸ‘‘ the Emperor (yes, it's literally called that) πŸ‘‘

  • --emperor β€” run the Emperor
  • --emperor-proxy-socket β€” force the vassal to became an Emperor proxy
  • --emperor-wrapper β€” set a binary wrapper for vassals
  • --emperor-wrapper-override β€” set a binary wrapper for vassals to try before the default one
  • --emperor-wrapper-fallback β€” set a binary wrapper for vassals to try as a last resort
  • --emperor-nofollow β€” do not follow symlinks when checking for mtime
  • --emperor-procname β€” set the Emperor process name
  • --emperor-freq β€” set the Emperor scan frequency (default 3 seconds)
  • --emperor-required-heartbeat β€” set the Emperor tolerance about heartbeats
  • --emperor-curse-tolerance β€” set the Emperor tolerance about cursed vassals
  • --emperor-pidfile β€” write the Emperor pid in the specified file

and that's just part one bestie, hold on, more is coming πŸ’–

  • --emperor-tyrant β€” puts the Emperor in Tyrant mode πŸ‘‘πŸ’…
  • --emperor-tyrant-nofollow β€” when checking for uid/gid in Tyrant mode, do not follow symlinks πŸš«πŸ”—
  • --emperor-stats β€” runs the Emperor stats server πŸ“Šβœ¨
  • --emperor-stats-server β€” runs the Emperor stats server πŸ“Šβœ¨ (same vibe, different flag name, bestie)
  • --early-emperor β€” spawns the emperor as soon as possible πŸƒβ€β™€οΈπŸ’¨
  • --emperor-broodlord β€” runs the emperor in BroodLord mode πŸ¦‡πŸ‘‘
  • --emperor-throttle β€” sets throttling level (in milliseconds) for bad behaving vassals (default 1000) 😀⏱️
  • --emperor-max-throttle β€” sets max throttling level (in milliseconds) for bad behaving vassals (default 3 minutes) 🚨⏳
  • --emperor-magic-exec β€” prefixes vassals config files with exec:// if they have the executable bit πŸͺ„βœ¨
  • --emperor-on-demand-extension β€” searches for a text file (vassal name + extension) containing the on demand socket name πŸ”πŸ“„
  • --emperor-on-demand-ext β€” searches for a text file (vassal name + extension) containing the on demand socket name πŸ”πŸ“„ (same thing, shorter name, slay)
  • --emperor-on-demand-directory β€” enables on demand mode binding to the unix socket in the specified directory named like the vassal + .socket πŸ“πŸ”Œ
  • --emperor-on-demand-dir β€” enables on demand mode binding to the unix socket in the specified directory named like the vassal + .socket πŸ“πŸ”Œ (yep, the alias)
  • --emperor-on-demand-exec β€” uses the output of the specified command as on demand socket name (the vassal name is passed as the only argument) πŸ’»πŸ”Œ
  • --emperor-extra-extension β€” allows the specified extension in the Emperor (vassal will be called with --config) πŸ—‚οΈβœ¨
  • --emperor-extra-ext β€” allows the specified extension in the Emperor (vassal will be called with --config) πŸ—‚οΈβœ¨ (alias energy)
  • --emperor-no-blacklist β€” disables the Emperor blacklisting subsystem πŸš«πŸ“
  • --emperor-use-clone β€” uses clone() instead of fork() passing the specified unshare() flags πŸ§¬πŸ”€
  • --emperor-graceful-shutdown β€” uses vassals graceful shutdown during ragnarok πŸŒ…πŸ›‘
  • --emperor-cap β€” sets vassals capability πŸŽšοΈπŸ”
  • --vassals-cap β€” sets vassals capability πŸŽšοΈπŸ”
  • --vassal-cap β€” sets vassals capability πŸŽšοΈπŸ”
  • --imperial-monitor-list β€” lists enabled imperial monitors πŸ“‹πŸ‘€
  • --imperial-monitors-list β€” lists enabled imperial monitors πŸ“‹πŸ‘€ (plural, same vibe)
  • --vassals-inherit β€” adds config templates to vassals config (uses --inherit) πŸ“πŸ”—
  • --vassals-include β€” includes config templates to vassals config (uses --include instead of --inherit) πŸ“πŸ”—
  • --vassals-inherit-before β€” adds config templates to vassals config (uses --inherit, parses before the vassal file) πŸ“βͺ
  • --vassals-include-before β€” includes config templates to vassals config (uses --include instead of --inherit, parses before the vassal file) πŸ“βͺ
  • --vassals-start-hook β€” runs the specified command before each vassal starts πŸπŸƒβ€β™€οΈ
  • --vassals-stop-hook β€” runs the specified command after vassal's death πŸ’€πŸ›‘
  • --vassal-sos β€” asks emperor for reinforcement when overloaded πŸ†˜πŸ‘‘
  • --vassal-sos-backlog β€” asks emperor for SOS if backlog queue has more items than the value specified πŸ“¬πŸ†˜
  • --vassals-set β€” automatically sets the specified option (via --set) for every vassal βš™οΈβœ¨
  • --vassal-set β€” automatically sets the specified option (via --set) for every vassal βš™οΈβœ¨
  • --heartbeat β€” announces healthiness to the emperor πŸ’“πŸ‘‘
  • --reload-mercy β€” sets the maximum time (in seconds) we wait for workers and other processes to die during reload/shutdown β³πŸ’€
  • --worker-reload-mercy β€” sets the maximum time (in seconds) a worker can take to reload/shutdown (default is 60) β³πŸ‘·
  • --mule-reload-mercy β€” sets the maximum time (in seconds) a mule can take to reload/shutdown (default is 60) ⏳🐴
  • --exit-on-reload β€” forces exit even if a reload is requested πŸšͺ🚫
  • --die-on-term β€” exits instead of brutal reload on SIGTERM πŸ’€πŸ“‰
  • --force-gateway β€” forces the spawn of the first registered gateway without a master πŸšͺ⚑
  • -h|--help β€” shows this help πŸ™‹β€β™€οΈβœ¨
  • -h|--usage β€” shows this help πŸ™‹β€β™€οΈβœ¨
  • --print-sym β€” prints content of the specified binary symbol πŸ–¨οΈπŸ”£
  • --print-symbol β€” prints content of the specified binary symbol πŸ–¨οΈπŸ”£
  • -r|--reaper β€” calls waitpid(-1,...) after each request to get rid of zombies πŸ§Ÿβ€β™€οΈπŸ”ͺ
  • -R|--max-requests β€” reloads workers after the specified amount of managed requests πŸ”„πŸ“Š
  • --min-worker-lifetime β€” number of seconds worker must run before being reloaded (default is 60) β±οΈπŸ‘·
  • --max-worker-lifetime β€” reloads workers after the specified amount of seconds (default is disabled) ⏱️🚫
  • --max-worker-lifetime-delta β€” adds (worker_id * delta) seconds to the max_worker_lifetime value of each worker βž•β±οΈ
  • -z|--socket-timeout β€” sets internal sockets timeout β±οΈπŸ”Œ
  • --no-fd-passing β€” disables file descriptor passing πŸš«πŸ“
  • --locks β€” creates the specified number of shared locks πŸ”’πŸ”’
  • --lock-engine β€” sets the lock engine βš™οΈπŸ”’
  • --ftok β€” sets the ipcsem key via ftok() for avoiding duplicates πŸ”‘πŸ“
  • --persistent-ipcsem β€” does not remove ipcsem's on shutdown πŸš«πŸ—‘οΈ
  • -A|--sharedarea β€” creates a raw shared memory area of specified pages (note: it supports keyval too) 🧠✨
  • --safe-fd β€” does not close the specified file descriptor πŸš«πŸ”’
  • --fd-safe β€” does not close the specified file descriptor πŸš«πŸ”’
  • --cache β€” creates a shared cache containing given elements πŸ—ƒοΈβœ¨
  • --cache-blocksize β€” sets cache blocksize πŸ“¦πŸ”’
  • --cache-store β€” enables persistent cache to disk πŸ’ΎπŸ—ƒοΈ
  • --cache-store-sync β€” sets frequency of sync for persistent cache πŸ”„πŸ’Ύ
  • --cache-no-expire β€” disables auto sweep of expired items 🚫🧹
  • --cache-expire-freq β€” sets the frequency of cache sweeper scans (default 3 seconds) ⏱️🧹
  • --cache-report-freed-items β€” constantly reports the cache item freed by the sweeper (use only for debug) πŸ“’πŸ›
  • --cache-udp-server β€” binds the cache udp server (used only for set/update/delete) to the specified socket πŸ”ŒπŸ“‘
  • --cache-udp-node β€” sends cache update/deletion to the specified cache udp server πŸ“‘πŸ—‘οΈ
  • --cache-sync β€” copies the whole content of another uWSGI cache server on server startup πŸ”„πŸ—ƒοΈ
  • --cache-use-last-modified β€” updates last_modified_at timestamp on every cache item modification (default is disabled) ⏱️✏️
  • --add-cache-item β€” adds an item in the cache βž•πŸ—ƒοΈ
  • --load-file-in-cache β€” loads a static file in the cache πŸ“‚πŸ—ƒοΈ
  • --load-file-in-cache-gzip β€” loads a static file in the cache with gzip compression πŸ—œοΈπŸ“‚
  • --cache2 β€” creates a new generation shared cache (keyval syntax) πŸ†•πŸ—ƒοΈ
  • --queue β€” enables shared queue πŸ“¬βœ¨
  • --queue-blocksize β€” sets queue blocksize πŸ“¦πŸ”’
  • --queue-store β€” enables persistent queue to disk πŸ’ΎπŸ“¬
  • --queue-store-sync β€” sets frequency of sync for persistent queue πŸ”„πŸ’Ύ
  • -Q|--spooler β€” runs a spooler on the specified directory πŸ“‚πŸ”„
  • --spooler-external β€” maps spoolers requests to a spooler directory managed by an external instance πŸ”—πŸ“‚
  • --spooler-ordered β€” tries to order the execution of spooler tasks πŸ”’πŸ”„
  • --spooler-chdir β€” chdir() to specified directory before each spooler task πŸ“πŸ”„
  • --spooler-processes β€” sets the number of processes for spoolers πŸ”’πŸ‘·
  • --spooler-quiet β€” does not be verbose with spooler tasks πŸ€«πŸ”„
  • --spooler-max-tasks β€” sets the maximum number of tasks to run before recycling a spooler πŸ”„β™»οΈ
  • --spooler-harakiri β€” sets harakiri timeout for spooler tasks β±οΈπŸ—‘οΈ
  • --spooler-frequency β€” sets spooler frequency β±οΈπŸ”„
  • --spooler-freq β€” sets spooler frequency β±οΈπŸ”„
  • --mule β€” adds a mule 🐴✨
  • --mules β€” adds the specified number of mules 🐴🐴🐴
  • --farm β€” adds a mule farm 🚜🐴
  • --mule-msg-size β€” sets mule message buffer size πŸ“πŸ΄
  • --signal β€” sends a uwsgi signal to a server πŸ“‘βœ¨
  • --signal-bufsize β€” sets buffer size for signal queue πŸ“πŸ“‘
  • --signals-bufsize β€” sets buffer size for signal queue πŸ“πŸ“‘
  • --signal-timer β€” adds a timer (syntax: <signal> <seconds>) ⏲️✨
  • --timer β€” adds a timer (syntax: <signal> <seconds>) ⏲️✨
  • --signal-rbtimer β€” adds a redblack timer (syntax: <signal> <seconds>) ⏲️🌳
  • --rbtimer β€” adds a redblack timer (syntax: <signal> <seconds>) ⏲️🌳
  • --rpc-max β€” maximum number of rpc slots (default: 64) πŸ“žπŸ”’
  • -L|--disable-logging β€” disables request logging πŸš«πŸ“
  • --flock β€” locks the specified file before starting, exits if locked πŸ”’πŸšͺ
  • --flock-wait β€” locks the specified file before starting, waits if locked πŸ”’β³
  • --flock2 β€” locks the specified file after logging/daemon setup, exits if locked πŸ”’πŸšͺ
  • --flock-wait2 β€” locks the specified file after logging/daemon setup, waits if locked πŸ”’β³
  • --pidfile β€” creates pidfile (before privileges drop) πŸ“πŸ†”
  • --pidfile2 β€” creates pidfile (after privileges drop) πŸ“πŸ†”
  • --safe-pidfile β€” creates safe pidfile (before privileges drop) πŸ“πŸ”’
  • --safe-pidfile2 β€” creates safe pidfile (after privileges drop) πŸ“πŸ”’
  • --chroot β€” chroot() to the specified directory πŸ πŸ”’
  • --pivot-root β€” pivot_root() to the specified directories (new_root and put_old must be separated with a space) πŸ”„πŸ“
  • --pivot_root β€” pivot_root() to the specified directories (new_root and put_old must be separated with a space) πŸ”„πŸ“
  • --uid β€” setuid to the specified user/uid πŸ‘€πŸ”‘
  • --gid β€” setgid to the specified group/gid πŸ‘₯πŸ”‘
  • --add-gid β€” adds the specified group id to the process credentials βž•πŸ‘₯
  • --immediate-uid β€” setuid to the specified user/uid IMMEDIATELY βš‘πŸ‘€
  • --immediate-gid β€” setgid to the specified group/gid IMMEDIATELY ⚑πŸ‘₯
  • --no-initgroups β€” disables additional groups set via initgroups() 🚫πŸ‘₯
  • --cap β€” sets process capability πŸŽšοΈπŸ”
  • --unshare β€” unshare() part of the processes and puts it in a new namespace πŸŒπŸ”€
  • --unshare2 β€” unshare() part of the processes and puts it in a new namespace after rootfs change πŸŒπŸ”€
  • --setns-socket β€” exposes a unix socket returning namespace fds from /proc/self/ns πŸ”ŒπŸ“
  • --setns-socket-skip β€” skips the specified entry when sending setns file descriptors β­οΈπŸ“
  • --setns-skip β€” skips the specified entry when sending setns file descriptors β­οΈπŸ“
  • --setns β€” joins a namespace created by an external uWSGI instance πŸ”—πŸŒ
  • --setns-preopen β€” opens /proc/self/ns as soon as possible and caches fds πŸš€πŸ“
  • --jailed β€” marks the instance as jailed (forces the execution of post_jail hooks) πŸ·οΈπŸ”’
  • --refork β€” fork() again after privileges drop. super useful for jailing systems, no cap 🫢
  • --re-fork β€” same vibe as --refork: fork() again after privileges drop. jailing systems love it πŸ¦‹
  • --refork-as-root β€” fork() again before privileges drop. still for jailing systems, bestie ✨
  • --re-fork-as-root β€” yep, another alias: fork() again before privileges drop. jailing systems, you know the drill πŸ’œ
  • --refork-post-jail β€” fork() again after jailing. jailing systems stay winning 🌸
  • --re-fork-post-jail β€” same as --refork-post-jail: fork() again after jailing. for jailing systems, fr fr πŸ“
  • --hook-asap β€” run the hook you specified as soon as possible. like, immediately, bestie ⚑
  • --hook-pre-jail β€” run that hook before jailing. prep time, periodt πŸ’…
  • --hook-post-jail β€” run that hook after jailing. clean up after yourself, queen πŸ‘‘
  • --hook-in-jail β€” run that hook in jail after initialization. jail time but make it productive 😭
  • --hook-as-root β€” run that hook before privileges drop. root energy, but careful πŸ”₯
  • --hook-as-user β€” run that hook after privileges drop. user vibes only 🫢
  • --hook-as-user-atexit β€” run that hook before app exit and reload. last words, bestie πŸ’€
  • --hook-pre-app β€” run that hook before app loading. get ready for the main character ✨
  • --hook-post-app β€” run that hook after app loading. app is up, celebrate πŸŽ€
  • --hook-post-fork β€” run that hook after each fork. every single time, no skips 🌈
  • --hook-accepting β€” run that hook after each worker enters the accepting phase. accepting era begins πŸ’–
  • --hook-accepting1 β€” run that hook after the first worker enters the accepting phase. first one to the party πŸŽ‰
  • --hook-accepting-once β€” run that hook after each worker enters the accepting phase, but only once per-instance. special occasion vibes πŸ₯³
  • --hook-accepting1-once β€” run that hook after the first worker enters the accepting phase, once per instance. one and done, bestie πŸ’…
  • --hook-master-start β€” run that hook when the Master starts. the boss is here πŸ‘‘
  • --hook-touch β€” run that hook when the specified file is touched. syntax: <file> <action>. touch grass? no, touch file 🌱
  • --hook-emperor-start β€” run that hook when the Emperor starts. all hail the emperor πŸ¦‹
  • --hook-emperor-stop β€” run that hook when the Emperor sends a stop message. stopping the empire, dramatic 😭
  • --hook-emperor-reload β€” run that hook when the Emperor sends a reload message. reload the empire, slay πŸ’…
  • --hook-emperor-lost β€” run that hook when the Emperor connection is lost. gone but not forgotten πŸ•ŠοΈ
  • --hook-as-vassal β€” run that hook before exec()ing the vassal. vassal prep, periodt ✨
  • --hook-as-emperor β€” run that hook in the emperor after the vassal has been started. emperor watching over, iconic πŸ‘‘
  • --hook-as-mule β€” run that hook in each mule. mule squad, assemble 🐴
  • --hook-as-gateway β€” run that hook in each gateway. gateway gang, rise up 🌈
  • --after-request-hook β€” run the specified function/symbol after each request. aftercare, bestie πŸ’–
  • --after-request-call β€” same as --after-request-hook: run that function/symbol after each request. you know the vibe 🫢
  • --exec-asap β€” run the specified command as soon as possible. ASAP, no waiting ⚑
  • --exec-pre-jail β€” run that command before jailing. prep work, queen πŸ’…
  • --exec-post-jail β€” run that command after jailing. post-jail clarity ✨
  • --exec-in-jail β€” run that command in jail after initialization. jailhouse rock 🎸
  • --exec-as-root β€” run that command before privileges drop. root access, careful πŸ”₯
  • --exec-as-user β€” run that command after privileges drop. user mode activated 🫢
  • --exec-as-user-atexit β€” run that command before app exit and reload. exit interview, bestie πŸ’€
  • --exec-pre-app β€” run that command before app loading. pre-game, let's go πŸŽ€
  • --exec-post-app β€” run that command after app loading. app is live, celebrate πŸŽ‰
  • --exec-as-vassal β€” run that command before exec()ing the vassal. vassal business, fr fr πŸ¦‹
  • --exec-as-emperor β€” run that command in the emperor after the vassal has been started. emperor's orders πŸ‘‘
  • --mount-asap β€” mount filesystem as soon as possible. ASAP mounting, bestie ⚑
  • --mount-pre-jail β€” mount filesystem before jailing. prep the mount 🌸
  • --mount-post-jail β€” mount filesystem after jailing. post-jail mount, slay πŸ’…
  • --mount-in-jail β€” mount filesystem in jail after initialization. jail mount, iconic ✨
  • --mount-as-root β€” mount filesystem before privileges drop. root mount, careful πŸ”₯
  • --mount-as-vassal β€” mount filesystem before exec()ing the vassal. vassal mount, periodt πŸ¦‹
  • --mount-as-emperor β€” mount filesystem in the emperor after the vassal has been started. emperor mount πŸ‘‘
  • --umount-asap β€” unmount filesystem as soon as possible. bye-bye mount, ASAP ⚑
  • --umount-pre-jail β€” unmount filesystem before jailing. clean up before jail 🌸
  • --umount-post-jail β€” unmount filesystem after jailing. post-jail cleanup, bestie πŸ’…
  • --umount-in-jail β€” unmount filesystem in jail after initialization. jail unmount, fr fr ✨
  • --umount-as-root β€” unmount filesystem before privileges drop. root unmount, careful πŸ”₯
  • --umount-as-vassal β€” unmount filesystem before exec()ing the vassal. vassal unmount, periodt πŸ¦‹
  • --umount-as-emperor β€” unmount filesystem in the emperor after the vassal has been started. emperor unmount πŸ‘‘
  • --wait-for-interface β€” wait for the specified network interface to come up before running root hooks. patience, bestie 🧘
  • --wait-for-interface-timeout β€” set the timeout for --wait-for-interface. don't wait forever ⏳
  • --wait-interface β€” same as --wait-for-interface: wait for that network interface before running root hooks. waiting era 🌈
  • --wait-interface-timeout β€” set the timeout for --wait-for-interface (the alias version). time's up ⏰
  • --wait-for-iface β€” wait for the specified network interface to come up before running root hooks. iface vibes 🫢
  • --wait-for-iface-timeout β€” set the timeout for --wait-for-interface (iface edition). tick tock ⏳
  • --wait-iface β€” wait for the specified network interface to come up before running root hooks. iface, iface, baby πŸŽ€
  • --wait-iface-timeout β€” set the timeout for --wait-for-interface (the iface alias). timeout, bestie ⏰
  • --wait-for-fs β€” wait for the specified filesystem item to appear before running root hooks. filesystem waiting game 🌸
  • --wait-for-file β€” wait for the specified file to appear before running root hooks. file, where you at? πŸ’…
  • --wait-for-dir β€” wait for the specified directory to appear before running root hooks. directory, show up ✨
  • --wait-for-mountpoint β€” wait for the specified mountpoint to appear before running root hooks. mountpoint, please πŸ₯Ί
  • --wait-for-fs-timeout β€” set the timeout for --wait-for-fs/file/dir. timeout for the waiting game ⏳
  • --wait-for-socket β€” wait for the specified socket to be ready before loading apps. socket, are you there? πŸ”Œ
  • --wait-for-socket-timeout β€” set the timeout for --wait-for-socket. socket timeout, bestie ⏰
  • --call-asap β€” call the specified function as soon as possible. ring ring, ASAP πŸ“ž
  • --call-pre-jail β€” call that function before jailing. pre-jail call πŸ’–
  • --call-post-jail β€” call that function after jailing. post-jail call, slay πŸ’…
  • --call-in-jail β€” call that function in jail after initialization. jail call, iconic ✨
  • --call-as-root β€” call that function before privileges drop. root call, careful πŸ”₯
  • --call-as-user β€” call that function after privileges drop. user call, periodt 🫢
  • --call-as-user-atexit β€” call that function before app exit and reload. last call, bestie πŸ’€
  • --call-pre-app β€” call that function before app loading. pre-app call, get ready πŸŽ€
  • --call-post-app β€” call that function after app loading. app loaded, call made πŸŽ‰
  • --call-as-vassal β€” call the specified function() before exec()ing the vassal. vassal call, fr fr πŸ¦‹
  • --call-as-vassal1 β€” call the specified function(char *) before exec()ing the vassal. vassal call with a char pointer, fancy πŸ’…
  • --call-as-vassal3 β€” call the specified function(char *, uid_t, gid_t) before exec()ing the vassal. vassal call with all the args, periodt ✨
  • --call-as-emperor β€” call the specified function() in the emperor after the vassal has been started. emperor call πŸ‘‘
  • --call-as-emperor1 β€” call the specified function(char *) in the emperor after the vassal has been started. emperor call with a string, slay πŸ’…
  • --call-as-emperor2 β€” call the specified function(char *, pid_t) in the emperor after the vassal has been started. emperor call with pid, iconic πŸ¦‹
  • --call-as-emperor4 β€” call the specified function(char *, pid_t, uid_t, gid_t) in the emperor after the vassal has been started. emperor call with everything, periodt πŸ‘‘
  • --ini β€” load config from an ini file. old school but valid πŸ’…
  • -y|--yaml β€” load config from a yaml file. yaml era, bestie ✨
  • -y|--yml β€” same as -y|--yaml: load config from a yaml file. yml, yaml, same vibe 🫢
  • -j|--json β€” load config from a json file. json, iconic πŸ’–
  • -j|--js β€” same as -j|--json: load config from a json file. js, json, whatever 🌈
  • --weight β€” weight of the instance. used by clustering/lb/subscriptions. put some weight on it πŸ’ͺ
  • --auto-weight β€” set weight of the instance automatically. used by clustering/lb/subscriptions. auto-weight, slay ✨
  • --no-server β€” force no-server mode. no server, no problem πŸ™ˆ
  • --command-mode β€” force command mode. command mode activated πŸ’…
  • --no-defer-accept β€” disable deferred-accept on sockets. no deferring, bestie 🚫
  • --tcp-nodelay β€” enable TCP NODELAY on each request. no delay, we move fast ⚑
  • --so-keepalive β€” enable TCP KEEPALIVEs. keep it alive, periodt 🫢
  • --so-send-timeout β€” set SO_SNDTIMEO. send timeout, fr fr ⏰
  • --socket-send-timeout β€” set SO_SNDTIMEO. same as above, socket send timeout πŸ’…
  • --so-write-timeout β€” set SO_SNDTIMEO. write timeout, bestie ✨
  • --socket-write-timeout β€” set SO_SNDTIMEO. socket write timeout, you know the vibe πŸ¦‹
  • --socket-sndbuf β€” set SO_SNDBUF. socket send buffer, iconic 🌸
  • --socket-rcvbuf β€” set SO_RCVBUF. socket receive buffer, slay πŸ’–
  • --shutdown-sockets β€” force calling shutdown() in addition to close() when sockets are destroyed. shutdown and close, double trouble πŸ’€
  • --limit-as β€” limit processes address space/vsz. keep it in check, bestie πŸ“
  • --limit-nproc β€” limit the number of spawnable processes. nproc limit, periodt 🚫
  • --reload-on-as β€” reload if address space is higher than specified megabytes. too much space, reload time πŸ”„
  • --reload-on-rss β€” reload if rss memory is higher than specified megabytes. rss too high, reload, slay πŸ’…
  • --evil-reload-on-as β€” force the master to reload a worker if its address space is higher than specified megabytes. evil reload, dramatic 😈
  • --evil-reload-on-rss β€” force the master to reload a worker if its rss memory is higher than specified megabytes. evil rss reload, iconic πŸ”₯
  • --mem-collector-freq β€” set the memory collector frequency when evil reloads are in place. collect that memory, bestie 🧹
  • --reload-on-fd β€” reload if the specified file descriptor is ready. fd ready, reload, periodt πŸ”„
  • --brutal-reload-on-fd β€” brutal reload if the specified file descriptor is ready. brutal, no mercy πŸ’€
  • --ksm β€” enable Linux KSM. KSM, slay 🐧
  • --pcre-jit β€” enable pcre jit (if available). jit, if you can, bestie ✨
  • --never-swap β€” lock all memory pages avoiding swapping. no swap, no cap πŸ”’
  • --touch-reload β€” reload uWSGI if the specified file is modified/touched. touch it, reload it πŸ’…
  • --touch-workers-reload β€” trigger reload of (only) workers if the specified file is modified/touched. workers only, periodt 🫢
  • --touch-mules-reload β€” reload mules if the specified file is modified/touched. mules reload, iconic 🐴
  • --touch-spoolers-reload β€” reload spoolers if the specified file is modified/touched. spoolers reload, slay ✨
  • --touch-chain-reload β€” trigger chain reload if the specified file is modified/touched. chain reaction, bestie ⛓️
  • --touch-logrotate β€” trigger logrotation if the specified file is modified/touched. logrotate, touch it πŸ”„
  • --touch-logreopen β€” trigger log reopen if the specified file is modified/touched. reopen those logs, periodt πŸ“‚
  • --touch-exec β€” run command when the specified file is modified/touched. syntax: file command. touch and run, iconic πŸ’…
  • --touch-signal β€” signal when the specified file is modified/touched. syntax: file signal. touch and signal, slay 🚦
  • --fs-reload β€” bestie, this one watches a filesystem object and does a graceful reload the moment it gets modified. soft reset energy. πŸ¦‹
  • --fs-brutal-reload β€” same vibe check, but the reload is brutal instead of graceful. no chill. πŸ’€
  • --fs-signal β€” when that filesystem object changes, it raises a uwsgi signal. syntax: file signal. very "text me when you're done" of it. ✨
  • --check-mountpoint β€” if a filesystem is no more reachable, this destroys the instance. it's giving reliable Fuse management, fr fr.
  • --mountpoint-check β€” literally the same thing as --check-mountpoint: destroy the instance if a filesystem is no more reachable. useful for reliable Fuse management. twins. πŸ‘―
  • --check-mount β€” bestie it's the same again: destroy the instance if a filesystem is no more reachable. useful for reliable Fuse management. πŸ’…
  • --mount-check β€” and again! destroy the instance if a filesystem is no more reachable. useful for reliable Fuse management. iconic quadruple threat. πŸ‘‘
  • --propagate-touch β€” the over-engineering option for systems with flaky signal management. she's extra and she knows it. πŸŽ€

  • --limit-post β€” limit the request body. that's it, that's the whole thing. πŸ“
  • --no-orphans β€” automatically kill workers if the master dies. > heads up bestie: this can be dangerous for availability. so like, read the room before enabling it. 😭
  • --prio β€” set processes/threads priority. ⭐
  • --cpu-affinity β€” set cpu affinity. pin those threads down, periodt. πŸ“Œ
  • --post-buffering β€” set the size in bytes after which it'll buffer to disk instead of memory. πŸ¦‹
  • --post-buffering-bufsize β€” set the buffer size for read() in post buffering mode. 🌸
  • --body-read-warning β€” sets the amount of allowed memory allocation (in megabytes) for the request body before it starts printing a warning. the gentle "girl... πŸ‘€" threshold.
  • --upload-progress β€” enable creation of .json files in the specified directory while a file upload is happening. progress updates, slay. ✨
  • --no-default-app β€” do not fallback to the default app. no safety net, we die like women. πŸ’€
  • --manage-script-name β€” automatically rewrite SCRIPT_NAME and PATH_INFO. 🧚
  • --ignore-script-name β€” ignore SCRIPT_NAME. okay and? ignored. πŸ™ˆ
  • --catch-exceptions β€” report the exception as http output. > bestie, this is discouraged β€” use it only for testing. do not ship this to prod i'm begging. 😭
  • --reload-on-exception β€” reload a worker whenever an exception is raised. spicy but valid. πŸ”₯
  • --reload-on-exception-type β€” reload a worker when a specific exception type is raised. 🎯
  • --reload-on-exception-value β€” reload a worker when a specific exception value is raised. πŸ’œ
  • --reload-on-exception-repr β€” reload a worker when a specific exception type+value (language-specific) is raised. the full combo meal. πŸ“
  • --exception-handler β€” add an exception handler. 🫢

  • --enable-metrics β€” enable the metrics subsystem. numbers girlies rise. πŸ“Š
  • --metric β€” add a custom metric. ✨
  • --metric-threshold β€” add a metric threshold/alarm. 🚨
  • --metric-alarm β€” add a metric threshold/alarm. same thing, different name, we love a repackage. πŸ’…
  • --alarm-metric β€” add a metric threshold/alarm. third time's the charm bestie. πŸŽ€
  • --metrics-dir β€” export metrics as text files to the specified directory. 🌸
  • --metrics-dir-restore β€” restore the last value taken from the metrics dir. memory unlocked. 🧠
  • --metric-dir β€” export metrics as text files to the specified directory. (yes this is the singular version, no we don't know why either, it's giving brand consistency) πŸ¦‹
  • --metric-dir-restore β€” restore the last value taken from the metrics dir. πŸ’œ
  • --metrics-no-cores β€” disable generation of cores-related metrics. πŸ‘‘
  • --udp β€” run the udp server on the specified address. πŸ“‘
  • --stats β€” enable the stats server on the specified address. ✨
  • --stats-server β€” enable the stats server on the specified address. same energy, different spelling. πŸ’…
  • --stats-http β€” prefix the stats server json output with http headers. πŸŽ€
  • --stats-minified β€” minify the statistics json output. skinny legend. 🌸
  • --stats-min β€” minify the statistics json output. her nickname. πŸ¦‹
  • --stats-push β€” push the stats json to the specified destination. yeet. πŸš€
  • --stats-pusher-default-freq β€” set the default frequency of stats pushers. ⏰
  • --stats-pushers-default-freq β€” set the default frequency of stats pushers. (plural version, same deal) πŸ’œ
  • --stats-no-cores β€” disable generation of cores-related stats. 🚫
  • --stats-no-metrics β€” do not include metrics in the stats output. πŸ™ˆ
  • --multicast β€” subscribe to the specified multicast group. 🫢
  • --multicast-ttl β€” set multicast ttl. ⭐
  • --multicast-loop β€” set multicast loop (default 1). πŸ”
  • --master-fifo β€” enable the master fifo. πŸŽ€
  • --notify-socket β€” enable the notification socket. πŸ””
  • --subscription-notify-socket β€” set the notification socket for subscriptions. ✨

  • --legion β€” become a member of a legion. main character joining the group chat. πŸ‘‘
  • --legion-mcast β€” become a member of a legion (shortcut for multicast). πŸ¦‹
  • --legion-node β€” add a node to a legion. 🌸
  • --legion-freq β€” set the frequency of legion packets. ⏱️
  • --legion-tolerance β€” set the tolerance of the legion subsystem. πŸ’œ
  • --legion-death-on-lord-error β€” declare itself as a dead node for the specified amount of seconds if one of the lord hooks fails. dramatic exit, love that for her. πŸ’€
  • --legion-skew-tolerance β€” set the clock skew tolerance of the legion subsystem (default 30 seconds). ⏰
  • --legion-lord β€” action to call on Lord election. πŸ—³οΈ
  • --legion-unlord β€” action to call on Lord dismiss. πŸ‘‹
  • --legion-setup β€” action to call on legion setup. πŸ› οΈ
  • --legion-death β€” action to call on legion death (shutdown of the instance). πŸ’€
  • --legion-join β€” action to call on legion join (first time quorum is reached). πŸŽ‰
  • --legion-node-joined β€” action to call on a new node joining the legion. 🫢
  • --legion-node-left β€” action to call on a node leaving the legion. 😭
  • --legion-quorum β€” set the quorum of a legion. πŸ”’
  • --legion-scroll β€” set the scroll of a legion. πŸ“œ
  • --legion-scroll-max-size β€” set the max size of the legion scroll buffer. πŸ“
  • --legion-scroll-list-max-size β€” set the max size of the legion scroll list buffer. πŸ“
  • --subscriptions-sign-check β€” set the digest algorithm and certificate directory for the secured subscription system. πŸ”
  • --subscriptions-sign-check-tolerance β€” set the maximum tolerance (in seconds) of clock skew for the secured subscription system. ⏳
  • --subscriptions-sign-skip-uid β€” skip the signature check for the specified uid when using unix sockets credentials. πŸ™ˆ
  • --subscriptions-credentials-check β€” add a directory to search for subscriptions key credentials. πŸ”‘
  • --subscriptions-use-credentials β€” enable management of SCM_CREDENTIALS in subscriptions UNIX sockets. πŸͺͺ
  • --subscription-algo β€” set the load balancing algorithm for the subscription system. βš–οΈ
  • --subscription-dotsplit β€” try to fallback to the next part (dot based) in the subscription key. 🎯
  • --subscribe-to β€” subscribe to the specified subscription server. 🫢
  • --st β€” subscribe to the specified subscription server. the short king. πŸ‘‘
  • --subscribe β€” subscribe to the specified subscription server. ✨
  • --subscribe2 β€” subscribe to the specified subscription server using advanced keyval syntax. the glow-up sequel. πŸ’…
  • --subscribe-freq β€” send a subscription announce at the specified interval. πŸ“£
  • --subscription-tolerance β€” set tolerance for subscription servers. πŸ’œ
  • --unsubscribe-on-graceful-reload β€” force the unsubscribe request even during a graceful reload. no loose ends. 🧹
  • --start-unsubscribed β€” configure subscriptions but do not send them (useful with master fifo). lowkey lurking. πŸ‘€
  • --subscribe-with-modifier1 β€” force the specified modifier1 when subscribing. 🎚️

  • --snmp β€” enable the embedded snmp server. 🌐
  • --snmp-community β€” set the snmp community string. πŸ”€
  • --ssl-verbose β€” be verbose about SSL errors. spill the tea, ssl. β˜•
  • --ssl-verify-depth β€” set the maximum certificate verification depth. πŸ“š
  • --sni β€” add an SNI-governed SSL context. πŸŽ€
  • --sni-dir β€” check for cert/key/client_ca files in the specified directory and create an sni/ssl context on demand. πŸͺ„
  • --sni-dir-ciphers β€” set ssl ciphers for the sni-dir option. πŸ”’
  • --ssl-enable3 β€” enable SSLv3. > bestie this is insecure. like, genuinely. 😭
  • --ssl-enable-sslv3 β€” enable SSLv3. > also insecure. same warning, different flag name. πŸ’€
  • --ssl-enable-tlsv1 β€” enable TLSv1. > insecure bestie. why are we here. πŸ™ˆ
  • --ssl-option β€” set a raw ssl option (numeric value). πŸ”’
  • --sni-regexp β€” add an SNI-governed SSL context (the key is a regexp). 🧚
  • --ssl-tmp-dir β€” store ssl-related temp files in the specified directory. πŸ—‚οΈ

  • --check-interval β€” set the interval (in seconds) of master checks. ⏲️
  • --forkbomb-delay β€” sleep for the specified number of seconds when a forkbomb is detected. nap time, but make it a crisis. 😴
  • --binary-path β€” force binary path. πŸ“
  • --privileged-binary-patch β€” patch the uwsgi binary with a new command (before privileges drop). 🩹
  • --unprivileged-binary-patch β€” patch the uwsgi binary with a new command (after privileges drop). 🩹
  • --privileged-binary-patch-arg β€” patch the uwsgi binary with a new command and arguments (before privileges drop). πŸ› οΈ
  • --unprivileged-binary-patch-arg β€” patch the uwsgi binary with a new command and arguments (after privileges drop). πŸ› οΈ
  • --async β€” enable async mode with the specified number of cores. ⚑
  • --max-fd β€” set the maximum number of file descriptors. > requires root privileges bestie, don't forget. πŸ‘‘
  • --logto β€” set logfile/udp address. πŸ“
  • --logto2 β€” log to the specified file or udp address after privileges drop. πŸͺ‚
  • --log-format β€” set an advanced format for request logging. 🎨
  • --logformat β€” set an advanced format for request logging. same thing, no dash, still iconic. ✨
  • --logformat-strftime β€” apply strftime to logformat output. πŸ•°οΈ
  • --log-format-strftime β€” apply strftime to logformat output. πŸ’…
  • --logfile-chown β€” chown logfiles. πŸ§‘β€πŸ³
  • --logfile-chmod β€” chmod logfiles. πŸ”§
  • --log-syslog β€” log to syslog. πŸ“»
  • --log-socket β€” send logs to the specified socket. πŸ”Œ
  • --req-logger β€” set/append a request logger. 🫢
  • --logger-req β€” set/append a request logger. her other name. πŸŽ€
  • --logger β€” set/append a logger. πŸ“‹
  • --logger-list β€” list enabled loggers. πŸ—’οΈ
  • --loggers-list β€” list enabled loggers. plural, same list. 🌸
  • --threaded-logger β€” offload log writing to a thread. multitasking queen. 🧡
  • --log-encoder β€” add an item in the log encoder chain. ⛓️
  • --log-req-encoder β€” add an item in the log req encoder chain. ⛓️
  • --log-drain β€” drain (do not show) log lines matching the specified regexp. blocked. 🚫
  • --log-filter β€” show only log lines matching the specified regexp. the opposite of draining, bestie. πŸ”
  • --log-route β€” log to the specified named logger if the regexp applied on the logline matches. 🚦
  • --log-req-route β€” log requests to the specified named logger if the regexp applied on the logline matches. 🚦
  • --use-abort β€” call abort() on segfault/fpe, which could be useful for generating a core dump. πŸ’₯
  • --alarm β€” create a new alarm. syntax: <alarm> <plugin:args>. ⏰
  • --alarm-cheap β€” use the main alarm thread rather than creating dedicated threads for curl-based alarms. budget-friendly alarm. πŸ’Έ

okay we're still deep in the flags bestie, buckle up, this stretch is long but every single one of these is real and they all matter πŸ’–


  • --alarm-freq β€” tunes the anti-loop alarm system (default 3 seconds) so it's not out here screaming at you constantly ✨
  • --alarm-fd β€” raises the specified alarm when an fd gets read (by default it reads 1 byte, set it to 8 for eventfd) πŸŽ€
  • --alarm-segfault β€” raises the specified alarm when the segmentation fault handler fires πŸ’€
  • --segfault-alarm β€” same thing, raises the specified alarm when the segmentation fault handler runs
  • --alarm-backlog β€” raises the specified alarm when the socket backlog queue is full 😭
  • --backlog-alarm β€” raises the specified alarm when the socket backlog queue is full
  • --lq-alarm β€” raises the specified alarm when the socket backlog queue is full
  • --alarm-lq β€” raises the specified alarm when the socket backlog queue is full
  • --alarm-listen-queue β€” raises the specified alarm when the socket backlog queue is full
  • --listen-queue-alarm β€” raises the specified alarm when the socket backlog queue is full
  • --log-alarm β€” raises the specified alarm when a log line matches the specified regexp, syntax: <alarm>[,alarm...] <regexp> πŸ”₯
  • --alarm-log β€” raises the specified alarm when a log line matches the specified regexp, syntax: <alarm>[,alarm...] <regexp>
  • --not-log-alarm β€” skips the specified alarm when a log line matches the specified regexp, syntax: <alarm>[,alarm...] <regexp> πŸ™ˆ
  • --not-alarm-log β€” skips the specified alarm when a log line matches the specified regexp, syntax: <alarm>[,alarm...] <regexp>
  • --alarm-list β€” lists enabled alarms πŸ‘‘
  • --alarms-list β€” lists enabled alarms
  • --alarm-msg-size β€” sets the max size of an alarm message (default 8192) ✨
  • --log-master β€” delegates logging to the master process πŸ’…
  • --log-master-bufsize β€” sets the buffer size for the master logger; bigger log messages get truncated βœ‚οΈ
  • --log-master-stream β€” creates the master logpipe as SOCK_STREAM 🌸
  • --log-master-req-stream β€” creates the master requests logpipe as SOCK_STREAM
  • --log-reopen β€” reopens the log after reload πŸ¦‹
  • --log-truncate β€” truncates the log on startup
  • --log-maxsize β€” sets the maximum logfile size
  • --log-backupname β€” sets the logfile name after rotation
  • --logdate β€” prefixes logs with a date or a strftime string πŸ“…
  • --log-date β€” prefixes logs with a date or a strftime string
  • --log-prefix β€” prefixes logs with a string
  • --log-zero β€” logs responses without a body
  • --log-slow β€” logs requests slower than the specified number of milliseconds 🐒
  • --log-4xx β€” logs requests with a 4xx response
  • --log-5xx β€” logs requests with a 5xx response
  • --log-big β€” logs requests bigger than the specified size
  • --log-sendfile β€” logs sendfile requests
  • --log-ioerror β€” logs requests with io errors πŸ’€
  • --log-micros β€” reports response time in microseconds instead of milliseconds ⏱️
  • --log-x-forwarded-for β€” uses the ip from the X-Forwarded-For header instead of REMOTE_ADDR 🌈
  • --master-as-root β€” leaves the master process running as root πŸ‘€
  • --drop-after-init β€” runs the privileges drop after plugin initialization, superseded by drop-after-apps
  • --drop-after-apps β€” runs the privileges drop after apps loading, superseded by master-as-root
  • --force-cwd β€” forces the initial working directory to the specified value
  • --binsh β€” overrides /bin/sh (used by exec hooks, it always falls back to /bin/sh) 🐚
  • --chdir β€” chdirs to the specified directory before apps loading
  • --chdir2 β€” chdirs to the specified directory after apps loading
  • --lazy β€” sets lazy mode (load apps in workers instead of master) 😴
  • --lazy-apps β€” loads apps in each worker instead of the master
  • --cheap β€” sets cheap mode (spawn workers only after the first request) πŸ’Έ
  • --cheaper β€” sets cheaper mode (adaptive process spawning)
  • --cheaper-initial β€” sets the initial number of processes to spawn in cheaper mode
  • --cheaper-algo β€” chooses the algorithm used for adaptive process spawning 🧠
  • --cheaper-step β€” the number of additional processes to spawn at each overload
  • --cheaper-overload β€” increases workers after the specified overload
  • --cheaper-algo-list β€” lists enabled cheapers algorithms πŸ“‹
  • --cheaper-algos-list β€” lists enabled cheapers algorithms
  • --cheaper-list β€” lists enabled cheapers algorithms
  • --cheaper-rss-limit-soft β€” won't spawn new workers if the total resident memory usage of all workers is higher than this limit πŸ›‘
  • --cheaper-rss-limit-hard β€” if total workers resident memory usage is higher, tries to stop workers
  • --idle β€” sets idle mode (puts uWSGI in cheap mode after inactivity) πŸ’€
  • --die-on-idle β€” shuts down uWSGI when idle ⚰️
  • --mount β€” loads the application under a mountpoint
  • --worker-mount β€” loads the application under a mountpoint in the specified worker or after workers spawn
  • --threads β€” runs each worker in prethreaded mode with the specified number of threads 🧡
  • --thread-stacksize β€” sets threads stacksize
  • --threads-stacksize β€” sets threads stacksize
  • --thread-stack-size β€” sets threads stacksize
  • --threads-stack-size β€” sets threads stacksize
  • --vhost β€” enables virtualhosting mode (based on the SERVER_NAME variable) 🏠
  • --vhost-host β€” enables virtualhosting mode (based on the HTTP_HOST variable)
  • --route β€” adds a route πŸ›£οΈ
  • --route-host β€” adds a route based on the Host header
  • --route-uri β€” adds a route based on REQUEST_URI
  • --route-qs β€” adds a route based on QUERY_STRING
  • --route-remote-addr β€” adds a route based on REMOTE_ADDR
  • --route-user-agent β€” adds a route based on HTTP_USER_AGENT
  • --route-remote-user β€” adds a route based on REMOTE_USER
  • --route-referer β€” adds a route based on HTTP_REFERER
  • --route-label β€” adds a routing label (for use with goto) 🏷️
  • --route-if β€” adds a route based on condition
  • --route-if-not β€” adds a route based on condition (negate version) πŸ™ƒ
  • --route-run β€” always runs the specified route action
  • --final-route β€” adds a final route 🏁
  • --final-route-status β€” adds a final route for the specified status
  • --final-route-host β€” adds a final route based on the Host header
  • --final-route-uri β€” adds a final route based on REQUEST_URI
  • --final-route-qs β€” adds a final route based on QUERY_STRING
  • --final-route-remote-addr β€” adds a final route based on REMOTE_ADDR
  • --final-route-user-agent β€” adds a final route based on HTTP_USER_AGENT
  • --final-route-remote-user β€” adds a final route based on REMOTE_USER
  • --final-route-referer β€” adds a final route based on HTTP_REFERER
  • --final-route-label β€” adds a final routing label (for use with goto) 🏷️
  • --final-route-if β€” adds a final route based on condition
  • --final-route-if-not β€” adds a final route based on condition (negate version) πŸ™ƒ
  • --final-route-run β€” always runs the specified final route action
  • --error-route β€” adds an error route 🚨
  • --error-route-status β€” adds an error route for the specified status
  • --error-route-host β€” adds an error route based on the Host header
  • --error-route-uri β€” adds an error route based on REQUEST_URI
  • --error-route-qs β€” adds an error route based on QUERY_STRING
  • --error-route-remote-addr β€” adds an error route based on REMOTE_ADDR
  • --error-route-user-agent β€” adds an error route based on HTTP_USER_AGENT
  • --error-route-remote-user β€” adds an error route based on REMOTE_USER
  • --error-route-referer β€” adds an error route based on HTTP_REFERER
  • --error-route-label β€” adds an error routing label (for use with goto) 🏷️
  • --error-route-if β€” adds an error route based on condition
  • --error-route-if-not β€” adds an error route based on condition (negate version) πŸ™ƒ
  • --error-route-run β€” always runs the specified error route action
  • --response-route β€” adds a response route πŸ’Œ
  • --response-route-status β€” adds a response route for the specified status
  • --response-route-host β€” adds a response route based on the Host header
  • --response-route-uri β€” adds a response route based on REQUEST_URI
  • --response-route-qs β€” adds a response route based on QUERY_STRING
  • --response-route-remote-addr β€” adds a response route based on REMOTE_ADDR
  • --response-route-user-agent β€” adds a response route based on HTTP_USER_AGENT
  • --response-route-remote-user β€” adds a response route based on REMOTE_USER
  • --response-route-referer β€” adds a response route based on HTTP_REFERER
  • --response-route-label β€” adds a response routing label (for use with goto) 🏷️
  • --response-route-if β€” adds a response route based on condition
  • --response-route-if-not β€” adds a response route based on condition (negate version) πŸ™ƒ
  • --response-route-run β€” always runs the specified response route action
  • --router-list β€” lists enabled routers πŸ“‹
  • --routers-list β€” lists enabled routers
  • --error-page-403 β€” adds an error page (html) for a managed 403 response
  • --error-page-404 β€” adds an error page (html) for a managed 404 response
  • --error-page-500 β€” adds an error page (html) for a managed 500 response
  • --websockets-ping-freq β€” sets the frequency (in seconds) of websockets automatic ping packets πŸ“
  • --websocket-ping-freq β€” sets the frequency (in seconds) of websockets automatic ping packets
  • --websockets-pong-tolerance β€” sets the tolerance (in seconds) of the websockets ping/pong subsystem
  • --websocket-pong-tolerance β€” sets the tolerance (in seconds) of the websockets ping/pong subsystem
  • --websockets-max-size β€” sets the max allowed size of websocket messages (in Kbytes, default 1024) πŸ“¦
  • --websocket-max-size β€” sets the max allowed size of websocket messages (in Kbytes, default 1024)
  • --chunked-input-limit β€” sets the max size of a chunked input part (default 1MB, in bytes) 🧩
  • --chunked-input-timeout β€” sets the default timeout for chunked input ⏳
  • --clock β€” sets a clock source πŸ•°οΈ
  • --clock-list β€” lists enabled clocks
  • --clocks-list β€” lists enabled clocks
  • --add-header β€” automatically adds HTTP headers to the response ✨

and yes bestie there's still more coming, don't you dare close the tab πŸ’–

  • --rem-header β€” bestie, this one just yeets a specified HTTP header right out of the response πŸ’…
  • --del-header β€” same energy, same job: automatically remove the specified HTTP header from the response
  • --collect-header β€” stash a specified response header into a request var ✨ syntax goes header var
  • --response-header-collect β€” literally the same thing: store the specified response header in a request var, syntax header var
  • --pull-header β€” store that specified response header in a request var AND remove it from the response, double duty 😌 syntax: header var
  • --check-static β€” peek for static files in the directory you name 🌸
  • --check-static-docroot β€” check for static files in the requested DOCUMENT_ROOT
  • --static-check β€” yep, check for static files in the specified directory (twin of --check-static, no cap)
  • --static-map β€” map a mountpoint onto a static directory (or a file) πŸ—ΊοΈ
  • --static-map2 β€” like --static-map, but it completely appends the requested resource to the docroot
  • --static-skip-ext β€” skip the extension you name when doing staticfile checks
  • --static-index β€” if someone asks for a directory, search for the file you specified instead πŸŽ€
  • --static-safe β€” skip security checks if the file lives under the path you give it (iykyk, be careful with this one)
  • --static-cache-paths β€” drop resolved paths into the uWSGI cache for however many seconds you specify ⏱️
  • --static-cache-paths-name β€” use the cache you name for static paths
  • --mimefile β€” set the mime types file path (default /etc/mime.types)
  • --mime-file β€” the exact same thing: set the mime types file path (default /etc/mime.types)
  • --static-expires-type β€” set the Expires header based on content type ✨
  • --static-expires-type-mtime β€” set the Expires header based on content type AND file mtime
  • --static-expires β€” set the Expires header based on a filename regexp
  • --static-expires-mtime β€” set the Expires header based on a filename regexp and file mtime
  • --static-expires-uri β€” set the Expires header based on a REQUEST_URI regexp
  • --static-expires-uri-mtime β€” set the Expires header based on a REQUEST_URI regexp and file mtime
  • --static-expires-path-info β€” set the Expires header based on a PATH_INFO regexp
  • --static-expires-path-info-mtime β€” set the Expires header based on a PATH_INFO regexp and file mtime
  • --static-gzip β€” if the regexp you supply matches the static file translation, it'll go hunt for a gzip version πŸ‘‘
  • --static-gzip-all β€” check for a gzip version of every single requested static file
  • --static-gzip-dir β€” check for a gzip version of all requested static files in the dir/prefix you name
  • --static-gzip-prefix β€” same vibes: check for a gzip version of all requested static files in the specified dir/prefix
  • --static-gzip-ext β€” check for a gzip version of all requested static files with the ext/suffix you give
  • --static-gzip-suffix β€” twin of the above: check for a gzip version of all requested static files with the specified ext/suffix
  • --honour-range β€” turn on support for the HTTP Range header πŸ”₯
  • --offload-threads β€” set how many offload threads to spawn (per-worker, default 0)
  • --offload-thread β€” same deal: set the number of offload threads to spawn (per-worker, default 0)
  • --file-serve-mode β€” set the static file serving mode
  • --fileserve-mode β€” literally identical: set static file serving mode
  • --disable-sendfile β€” turn off sendfile() and just rely on boring old read()/write() 😭
  • --check-cache β€” check for response data in the specified cache (leave it empty for the default cache)
  • --close-on-exec β€” set close-on-exec on connection sockets (could be required for spawning processes inside requests)
  • --close-on-exec2 β€” set close-on-exec on server sockets (could be required for spawning processes in requests)
  • --mode β€” set a uWSGI custom mode
  • --env β€” set an environment variable 🌈
  • --envdir β€” load a daemontools compatible envdir
  • --early-envdir β€” load a daemontools compatible envdir ASAP ⚑
  • --unenv β€” unset an environment variable
  • --vacuum β€” try to remove all of the generated file/sockets 🧹
  • --file-write β€” write the specified content to the specified file before privileges drop, syntax file=value ✍️
  • --cgroup β€” put the processes into the cgroup you name
  • --cgroup-opt β€” set a value in the specified cgroup option
  • --cgroup-dir-mode β€” set permission for the cgroup directory (default is 700)
  • --namespace β€” run in a new namespace under the rootfs you specify πŸ¦‹
  • --namespace-keep-mount β€” keep the mountpoint you name inside your namespace
  • --ns β€” run in a new namespace under the specified rootfs (same as --namespace)
  • --namespace-net β€” add a network namespace
  • --ns-net β€” add a network namespace (yep, the short twin)
  • --enable-proxy-protocol β€” enable PROXY1 protocol support (only for http parsers)
  • --reuse-port β€” enable the REUSE_PORT flag on a socket (BSD only πŸ“)
  • --tcp-fast-open β€” enable the TCP_FASTOPEN flag on TCP sockets with the qlen value you give
  • --tcp-fastopen β€” same thing: enable TCP_FASTOPEN on TCP sockets with the specified qlen value
  • --tcp-fast-open-client β€” use sendto(..., MSG_FASTOPEN, ...) instead of connect() if it's supported πŸ’«
  • --tcp-fastopen-client β€” identical: use sendto(..., MSG_FASTOPEN, ...) instead of connect() if supported
  • --zerg β€” attach to a zerg server πŸ‘Ύ
  • --zerg-fallback β€” fall back to normal sockets if the zerg server isn't available
  • --zerg-server β€” enable the zerg server on the UNIX socket you specify
  • --cron β€” add a cron task ⏰
  • --cron2 β€” add a cron task, but key=val syntax this time
  • --unique-cron β€” add a unique cron task
  • --cron-harakiri β€” set the max time (in seconds) we wait for a cron command to complete
  • --legion-cron β€” add a cron task that only runs when the instance is a lord of the specified legion πŸ‘‘
  • --cron-legion β€” same as --legion-cron: add a cron task runnable only when the instance is a lord of the specified legion
  • --unique-legion-cron β€” add a UNIQUE cron task runnable only when the instance is a lord of the specified legion
  • --unique-cron-legion β€” same vibe: add a unique cron task runnable only when the instance is a lord of the specified legion
  • --loop β€” pick the uWSGI loop engine πŸ”„
  • --loop-list β€” list all the enabled loop engines
  • --loops-list β€” list enabled loop engines (same thing, extra s)
  • --worker-exec β€” run the command you give as a worker
  • --worker-exec2 β€” run the specified command as a worker, but after the post_fork hook
  • --attach-daemon β€” attach a command/daemon to the master process (heads up: the command has to NOT go into background) ⚠️
  • --attach-control-daemon β€” attach a command/daemon to the master process (the command has to not go in background), and when the daemon dies, the master dies too πŸ’€
  • --smart-attach-daemon β€” attach a command/daemon to the master process managed by a pidfile (the command has to daemonize)
  • --smart-attach-daemon2 β€” attach a command/daemon to the master process managed by a pidfile (the command has to NOT daemonize) πŸ™ˆ
  • --legion-attach-daemon β€” same as --attach-daemon, except the daemon only runs on the legion lord node
  • --legion-smart-attach-daemon β€” same as --smart-attach-daemon, but the daemon only runs on the legion lord node
  • --legion-smart-attach-daemon2 β€” same as --smart-attach-daemon2, but the daemon only runs on the legion lord node
  • --daemons-honour-stdin β€” don't swap the stdin of external daemons over to /dev/null
  • --attach-daemon2 β€” the keyval variant of attach-daemon (it supports smart modes too) ✨
  • --plugins β€” load uWSGI plugins 🧩
  • --plugin β€” load uWSGI plugins (singular spelling, same job)
  • --need-plugins β€” load uWSGI plugins, and exit on error
  • --need-plugin β€” load uWSGI plugins (exit on error), singular flavor
  • --plugins-dir β€” add a directory to the uWSGI plugin search path
  • --plugin-dir β€” add a directory to uWSGI plugin search path (same thing)
  • --plugins-list β€” list the enabled plugins
  • --plugin-list β€” list enabled plugins (identical)
  • --autoload β€” try to automatically load plugins whenever unknown options show up
  • --dlopen β€” blindly load a shared library (no thoughts, just vibes)
  • --allowed-modifiers β€” a comma separated list of allowed modifiers
  • --remap-modifier β€” remap a request modifier from one id to another
  • --dump-options β€” dump the FULL list of available options πŸ“œ
  • --show-config β€” show the current config, reformatted as ini
  • --binary-append-data β€” return the content of a resource to stdout for appending to a uwsgi binary (for data:// usage)
  • --print β€” simple print πŸ–¨οΈ
  • --iprint β€” simple print, immediate version
  • --exit β€” force exit() of the instance πŸšͺ
  • --cflags β€” report uWSGI CFLAGS (super useful for building external plugins)
  • --dot-h β€” dump the uwsgi.h used for building the core (useful for building external plugins)
  • --config-py β€” dump the uwsgiconfig.py used for building the core (useful for building external plugins)
  • --build-plugin β€” build a uWSGI plugin for the current binary
  • --version β€” print the uWSGI version ⭐
  • --response-headers-limit β€” set the max response header size (default: 64k)
  • --wsgi-file β€” load a .wsgi file 🐍
  • --file β€” load a .wsgi file (same)
  • --eval β€” eval python code
  • -w|--module β€” load a WSGI module
  • -w|--wsgi β€” load a WSGI module (the other name for it)
  • --callable β€” set the default WSGI callable name
  • -J|--test β€” test a module import πŸ§ͺ
  • -H|--home β€” set PYTHONHOME/virtualenv
  • -H|--virtualenv β€” set PYTHONHOME/virtualenv
  • -H|--venv β€” set PYTHONHOME/virtualenv
  • -H|--pyhome β€” set PYTHONHOME/virtualenv
  • --py-programname β€” set the python program name
  • --py-program-name β€” set python program name (same)
  • --pythonpath β€” add a directory (or glob) to pythonpath
  • --python-path β€” add directory (or glob) to pythonpath (twin)
  • --pp β€” add a directory (or glob) to pythonpath (short and sweet)
  • --pymodule-alias β€” add a python alias module
  • --post-pymodule-alias β€” add a python module alias after the uwsgi module is initialized
  • --import β€” import a python module
  • --pyimport β€” import a python module
  • --py-import β€” import a python module
  • --python-import β€” import a python module (yes bestie, four whole spellings of the same option, iconic)
  • --shared-import, --shared-pyimport, --shared-py-import, --shared-python-import β€” import a python module in all of the processes ✨
  • --spooler-import, --spooler-pyimport, --spooler-py-import, --spooler-python-import β€” import a python module in the spooler πŸŒ€
  • --pyargv β€” manually set sys.argv πŸ› οΈ
  • -O|--optimize β€” set python optimization level πŸ”§
  • --pecan β€” load a pecan config file 🌰
  • --paste β€” load a paste.deploy config file πŸ“‹
  • --paste-logger β€” enable paste fileConfig logger πŸͺ΅
  • --web3 β€” load a web3 app 🌐
  • --pump β€” load a pump app πŸ’ͺ
  • --wsgi-lite β€” load a wsgi-lite app πŸͺΆ
  • --ini-paste β€” load a paste.deploy config file containing uwsgi section πŸ“„
  • --ini-paste-logged β€” load a paste.deploy config file containing uwsgi section (load loggers too) πŸ“
  • --reload-os-env β€” force reload of os.environ at each request ♻️
  • --no-site β€” do not import site module 🚫
  • --pyshell β€” run an interactive python shell in the uWSGI environment 🐍
  • --pyshell-oneshot β€” run an interactive python shell in the uWSGI environment (one-shot variant) 🎯
  • --python, --py, --pyrun β€” run a python script in the uWSGI environment πŸ“œ
  • --py-tracebacker β€” enable the uWSGI python tracebacker πŸ”
  • --py-auto-reload, --py-autoreload, --python-auto-reload, --python-autoreload β€” monitor python modules mtime to trigger reload (use only in development) πŸ”„βš οΈ
  • --py-auto-reload-ignore β€” ignore the specified module during auto-reload scan (can be specified multiple times) πŸ™ˆ
  • --wsgi-env-behaviour, --wsgi-env-behavior β€” set the strategy for allocating/deallocating the WSGI env 🌿
  • --start_response-nodelay β€” send WSGI http headers as soon as possible (PEP violation) πŸš€
  • --wsgi-strict β€” try to be fully PEP compliant disabling optimizations πŸ“
  • --wsgi-accept-buffer, --wsgi-accept-buffers β€” accept CPython buffer-compliant objects as WSGI response in addition to string/bytes 🧺
  • --wsgi-disable-file-wrapper β€” disable wsgi.file_wrapper feature 🚫
  • --python-version β€” report python version 🐍
  • --python-raw β€” load a python file for managing raw requests 🧡
  • --py-sharedarea β€” create a sharedarea from a python bytearray object of the specified size 🧠
  • --py-call-osafterfork β€” enable child processes running cpython to trap OS signals πŸ“‘
  • --py-call-uwsgi-fork-hooks β€” call pre and post hooks when uswgi forks to update the internal interpreter state of CPython πŸͺ
  • --python-worker-override β€” override worker with the specified python script πŸ”
  • --py-executable, --py-sys-executable β€” override sys.executable value 🐍

πŸ’– That's the whole page, bestie. Source: uwsgi_python312, version 2.0.24-debian, dated April 2024. Now go be iconic with your options πŸ’…βœ¨

πŸ“¦ where this page comes from