UWSGI_PYTHON311(1)

๐Ÿ“ฆ version 2.0.21, in debian bookworm

โœจ NAME โœจ

uwsgi_python311 โ€” a fast (pure C), self-healing, developer-friendly WSGI server. bestie she is that girl. ๐Ÿ’…


๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

uwsgi-core-local [options...]

๐Ÿ’– DESCRIPTION ๐Ÿ’–

okay so. this is uWSGI, but the Python 3.11 flavoured one, and the whole page is basically one giant list of options. no shade, that's just how she is. every flag below does exactly what it says, so grab a snack ๐Ÿ“ and let's go.

๐Ÿ’… sockets & protocols

  • -s, --socket โ€” bind to the specified UNIX/TCP socket using the default protocol ๐ŸŒˆ
  • -s, --uwsgi-socket โ€” bind to the specified UNIX/TCP socket using the uwsgi protocol
  • --suwsgi-socket โ€” bind to the specified UNIX/TCP socket using the uwsgi protocol over SSL ๐Ÿ”’
  • --ssl-socket โ€” bind to the specified UNIX/TCP socket using the uwsgi protocol over SSL ๐Ÿ”’
  • --http-socket โ€” bind to the specified UNIX/TCP socket using the HTTP protocol ๐ŸŒ
  • --http-socket-modifier1 โ€” force the specified modifier1 when using the HTTP protocol
  • --http-socket-modifier2 โ€” force the specified modifier2 when using the HTTP protocol
  • --http11-socket โ€” bind to the specified UNIX/TCP socket using the HTTP 1.1 (Keep-Alive) protocol โœจ
  • --https-socket โ€” bind to the specified UNIX/TCP socket using the HTTPS protocol ๐Ÿ”
  • --https-socket-modifier1 โ€” force the specified modifier1 when using the HTTPS protocol
  • --https-socket-modifier2 โ€” force the specified modifier2 when using the HTTPS protocol
  • --fastcgi-socket โ€” bind to the specified UNIX/TCP socket using the FastCGI protocol
  • --fastcgi-nph-socket โ€” bind to the specified UNIX/TCP socket using the FastCGI protocol (nph mode)
  • --fastcgi-modifier1 โ€” force the specified modifier1 when using the FastCGI protocol
  • --fastcgi-modifier2 โ€” force the specified modifier2 when using the FastCGI protocol
  • --scgi-socket โ€” bind to the specified UNIX/TCP socket using the SCGI protocol
  • --scgi-nph-socket โ€” bind to the specified UNIX/TCP socket using the SCGI protocol (nph mode)
  • --scgi-modifier1 โ€” force the specified modifier1 when using the SCGI protocol
  • --scgi-modifier2 โ€” force the specified modifier2 when using the SCGI protocol
  • --raw-socket โ€” bind to the specified UNIX/TCP socket using the RAW protocol
  • --raw-modifier1 โ€” force the specified modifier1 when using the RAW protocol
  • --raw-modifier2 โ€” force the specified modifier2 when using the RAW protocol
  • --puwsgi-socket โ€” bind to the specified UNIX/TCP socket using the 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, processes & 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-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

๐Ÿ“œ config & friends

  • -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, errors & templates

  • --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()
  • --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)

๐Ÿ’€ daemonize & instance control

  • -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, buffers & memory

  • -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

๐Ÿงต threads, names & the master

  • -T, --enable-threads โ€” enable threads
  • --no-threads-wait โ€” do not wait for threads cancellation on quit/reload
  • --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

  • --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
  • --emperor-tyrant โ€” put the Emperor in Tyrant mode ๐Ÿ˜ˆ
  • --emperor-tyrant-nofollow โ€” do not follow symlinks when checking for uid/gid in Tyrant mode
  • --emperor-stats โ€” run the Emperor stats server
  • --emperor-stats-server โ€” run the Emperor stats server

and bestie we are literally not even close to done, hold on because part 2 is right there and it's got even more ๐Ÿ’–

  • --early-emperor โ€” spawn the emperor as soon as possibile โœจ (yes, that's the manpage's own spelling, we keep it bestie, no cap)
  • --emperor-broodlord โ€” run the emperor in BroodLord mode ๐Ÿงš (it's giving sci-fi villain, but make it config management)
  • --emperor-throttle โ€” set the throttling level (in milliseconds) for vassals that are being bad ๐Ÿ˜ค default is 1000
  • --emperor-max-throttle โ€” set the max throttling level (in milliseconds) for badly-behaved vassals, default is 3 minutes ๐Ÿ’€
  • --emperor-magic-exec โ€” prefixes vassal config files with exec:// if they have the executable bit set ๐Ÿ”ฅ lowkey magic fr
  • --emperor-on-demand-extension โ€” search for a text file (vassal name + extension) that contains the on demand socket name ๐Ÿซถ
  • --emperor-on-demand-ext โ€” same thing, shorter name, search for that text file (vassal name + extension) holding the on demand socket name ๐Ÿ’…
  • --emperor-on-demand-directory โ€” enable on demand mode, binding to the unix socket inside the specified directory, named like the vassal + .socket ๐ŸŒธ
  • --emperor-on-demand-dir โ€” the short twin: on demand mode, unix socket in the specified dir, named vassal + .socket โœจ
  • --emperor-on-demand-exec โ€” use the output of the specified command as the on demand socket name (the vassal name gets passed as the only argument) ๐Ÿ‘‘
  • --emperor-extra-extension โ€” allows the specified extension in the Emperor (the vassal will be called with --config) ๐ŸŽ€
  • --emperor-extra-ext โ€” same energy, short version: allows that extension in the Emperor, vassal gets called with --config ๐Ÿฆ‹
  • --emperor-no-blacklist โ€” disable the Emperor blacklisting subsystem ๐Ÿ™ˆ
  • --emperor-use-clone โ€” use clone() instead of fork(), passing the specified unshare() flags ๐Ÿงฌ
  • --emperor-graceful-shutdown โ€” use vassals graceful shutdown during ragnarok ๐ŸŒˆ (yes, ragnarok, they said what they said)
  • --emperor-cap โ€” set vassals capability ๐Ÿ’ช
  • --vassals-cap โ€” set vassals capability (same flag, another alias, we love options) ๐Ÿ’ช
  • --vassal-cap โ€” set vassals capability, singular edition ๐Ÿ’ช
  • --imperial-monitor-list โ€” list enabled imperial monitors ๐Ÿ‘€
  • --imperial-monitors-list โ€” list enabled imperial monitors (plural, because why not) ๐Ÿ‘€
  • --vassals-inherit โ€” add config templates to vassals config (uses --inherit) ๐Ÿซถ
  • --vassals-include โ€” include config templates in vassals config (uses --include instead of --inherit) โœจ
  • --vassals-inherit-before โ€” add config templates to vassals config (uses --inherit, and parses before the vassal file) โญ
  • --vassals-include-before โ€” include config templates in vassals config (uses --include instead of --inherit, and parses before the vassal file) โญ
  • --vassals-start-hook โ€” run the specified command before each vassal starts ๐ŸŽฌ
  • --vassals-stop-hook โ€” run the specified command after a vassal's death ๐Ÿ’€
  • --vassal-sos โ€” ask the emperor for reinforcement when overloaded ๐Ÿ†˜
  • --vassal-sos-backlog โ€” ask the emperor for SOS if the backlog queue has more items than the value specified ๐Ÿ“ˆ
  • --vassals-set โ€” automatically set the specified option (via --set) for every vassal ๐Ÿ”
  • --vassal-set โ€” automatically set the specified option (via --set) for every vassal (singular spelling, same vibe) ๐Ÿ”
  • --heartbeat โ€” announce healthiness to the emperor ๐Ÿ’“
  • --reload-mercy โ€” set the maximum time (in seconds) we wait for workers and other processes to die during reload/shutdown โณ
  • --worker-reload-mercy โ€” set the maximum time (in seconds) a worker can take to reload/shutdown, default is 60 ๐Ÿ•ฐ๏ธ
  • --mule-reload-mercy โ€” set the maximum time (in seconds) a mule can take to reload/shutdown, default is 60 ๐Ÿด
  • --exit-on-reload โ€” force exit even if a reload is requested ๐Ÿšช
  • --die-on-term โ€” exit instead of brutal reload on SIGTERM ๐Ÿ’€
  • --force-gateway โ€” force the spawn of the first registered gateway without a master ๐ŸŒ‰
  • -h|--help โ€” show this help ๐Ÿซถ
  • -h|--usage โ€” show this help (yes, again, it's the same letter, don't come for us) ๐Ÿซถ
  • --print-sym โ€” print the content of the specified binary symbol ๐Ÿ”
  • --print-symbol โ€” print the content of the specified binary symbol (longer name, same tea) ๐Ÿ”
  • -r|--reaper โ€” call waitpid(-1,...) after each request to get rid of zombies ๐ŸงŸ
  • -R|--max-requests โ€” reload workers after the specified amount of managed requests ๐Ÿ”„
  • --min-worker-lifetime โ€” number of seconds a worker must run before being reloaded, default is 60 โฑ๏ธ
  • --max-worker-lifetime โ€” reload workers after the specified amount of seconds, default is disabled โŒ›
  • --max-worker-lifetime-delta โ€” add (worker_id * delta) seconds to the max_worker_lifetime value of each worker โž•
  • -z|--socket-timeout โ€” set internal sockets timeout โฒ๏ธ
  • --no-fd-passing โ€” disable file descriptor passing ๐Ÿšซ
  • --locks โ€” create the specified number of shared locks ๐Ÿ”
  • --lock-engine โ€” set the lock engine โš™๏ธ
  • --ftok โ€” set the ipcsem key via ftok() for avoiding duplicates ๐Ÿ”‘
  • --persistent-ipcsem โ€” do not remove ipcsem's on shutdown ๐Ÿซฅ
  • -A|--sharedarea โ€” create a raw shared memory area of specified pages (note: it supports keyval too) ๐Ÿง 
  • --safe-fd โ€” do not close the specified file descriptor ๐Ÿ›Ÿ
  • --fd-safe โ€” do not close the specified file descriptor (same thing, different order, iconic) ๐Ÿ›Ÿ
  • --cache โ€” create a shared cache containing given elements ๐Ÿ—ƒ๏ธ
  • --cache-blocksize โ€” set cache blocksize ๐Ÿ“ฆ
  • --cache-store โ€” enable persistent cache to disk ๐Ÿ’พ
  • --cache-store-sync โ€” set frequency of sync for persistent cache ๐Ÿ”„
  • --cache-no-expire โ€” disable auto sweep of expired items ๐Ÿงน
  • --cache-expire-freq โ€” set the frequency of cache sweeper scans, default 3 seconds โฐ
  • --cache-report-freed-items โ€” constantly report the cache item freed by the sweeper (use only for debug) ๐Ÿ›
  • --cache-udp-server โ€” bind the cache udp server (used only for set/update/delete) to the specified socket ๐Ÿ“ก
  • --cache-udp-node โ€” send cache update/deletion to the specified cache udp server ๐Ÿ“ค
  • --cache-sync โ€” copy the whole content of another uWSGI cache server on server startup ๐Ÿ“ฅ
  • --cache-use-last-modified โ€” update last_modified_at timestamp on every cache item modification, default is disabled ๐Ÿ•
  • --add-cache-item โ€” add an item in the cache โž•
  • --load-file-in-cache โ€” load a static file in the cache ๐Ÿ“‚
  • --load-file-in-cache-gzip โ€” load a static file in the cache with gzip compression ๐Ÿ—œ๏ธ
  • --cache2 โ€” create a new generation shared cache (keyval syntax) โœจ
  • --queue โ€” enable shared queue ๐Ÿšถโ™€๏ธ
  • --queue-blocksize โ€” set queue blocksize ๐Ÿ“ฆ
  • --queue-store โ€” enable persistent queue to disk ๐Ÿ’พ
  • --queue-store-sync โ€” set frequency of sync for persistent queue ๐Ÿ”„
  • -Q|--spooler โ€” run a spooler on the specified directory ๐Ÿงต
  • --spooler-external โ€” map spoolers requests to a spooler directory managed by an external instance ๐ŸŒ
  • --spooler-ordered โ€” try to order the execution of spooler tasks ๐Ÿ“‹
  • --spooler-chdir โ€” chdir() to specified directory before each spooler task ๐Ÿ“
  • --spooler-processes โ€” set the number of processes for spoolers ๐Ÿ‘ฅ
  • --spooler-quiet โ€” do not be verbose with spooler tasks ๐Ÿคซ
  • --spooler-max-tasks โ€” set the maximum number of tasks to run before recycling a spooler โ™ป๏ธ
  • --spooler-harakiri โ€” set harakiri timeout for spooler tasks ๐Ÿ—ก๏ธ
  • --spooler-frequency โ€” set spooler frequency ๐Ÿ“ถ
  • --spooler-freq โ€” set spooler frequency (short twin) ๐Ÿ“ถ
  • --mule โ€” add a mule ๐Ÿด
  • --mules โ€” add the specified number of mules ๐Ÿด๐Ÿด
  • --farm โ€” add a mule farm ๐Ÿšœ
  • --mule-msg-size โ€” set mule message buffer size ๐Ÿ“จ
  • --signal โ€” send a uwsgi signal to a server ๐Ÿ“ถ
  • --signal-bufsize โ€” set buffer size for signal queue ๐Ÿ“ฅ
  • --signals-bufsize โ€” set buffer size for signal queue (plural, same thing) ๐Ÿ“ฅ
  • --signal-timer โ€” add a timer (syntax: <signal> <seconds>) โฐ
  • --timer โ€” add a timer (syntax: <signal> <seconds>) โฐ
  • --signal-rbtimer โ€” add a redblack timer (syntax: <signal> <seconds>) ๐ŸŒณ
  • --rbtimer โ€” add a redblack timer (syntax: <signal> <seconds>) ๐ŸŒณ
  • --rpc-max โ€” maximum number of rpc slots, default: 64 ๐Ÿ“ž
  • -L|--disable-logging โ€” disable request logging ๐Ÿค
  • --flock โ€” lock the specified file before starting, exit if locked ๐Ÿ”’
  • --flock-wait โ€” lock the specified file before starting, wait if locked โณ
  • --flock2 โ€” lock the specified file after logging/daemon setup, exit if locked ๐Ÿ”’
  • --flock-wait2 โ€” lock the specified file after logging/daemon setup, wait if locked โณ
  • --pidfile โ€” create pidfile (before privileges drop) ๐Ÿชช
  • --pidfile2 โ€” create pidfile (after privileges drop) ๐Ÿชช
  • --safe-pidfile โ€” create safe pidfile (before privileges drop) ๐Ÿ›Ÿ
  • --safe-pidfile2 โ€” create 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) โ€” underscore edition ๐Ÿ’…
  • --uid โ€” setuid to the specified user/uid ๐Ÿ†”
  • --gid โ€” setgid to the specified group/gid ๐Ÿ†”
  • --add-gid โ€” add 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 โ€” disable additional groups set via initgroups() ๐Ÿšซ
  • --cap โ€” set process capability ๐Ÿ’ช
  • --unshare โ€” unshare() part of the processes and put it in a new namespace ๐Ÿช
  • --unshare2 โ€” unshare() part of the processes and put it in a new namespace, but after rootfs change ๐Ÿช
  • --setns-socket โ€” expose a unix socket returning namespace fds from /proc/self/ns ๐Ÿ”Œ
  • --setns-socket-skip โ€” skip the specified entry when sending setns file descriptors โญ๏ธ
  • --setns-skip โ€” skip the specified entry when sending setns file descriptors (short version) โญ๏ธ
  • --setns โ€” join a namespace created by an external uWSGI instance ๐Ÿšช
  • --setns-preopen โ€” open /proc/self/ns as soon as possible and cache fds ๐Ÿ—‚๏ธ
  • --jailed โ€” mark the instance as jailed (force the execution of post_jail hooks) ๐Ÿ”’
  • --refork โ€” fork() again after privileges drop. Useful for jailing systems ๐Ÿ”
  • --re-fork โ€” fork() again after privileges drop. Useful for jailing systems (hyphen edition) ๐Ÿ”
  • --refork-as-root โ€” fork() again before privileges drop. Useful for jailing systems ๐Ÿ‘‘
  • --re-fork-as-root โ€” fork() again before privileges drop. Useful for jailing systems (hyphen edition, still iconic) ๐Ÿ‘‘

โœจ OPTIONS โœจ

okay bestie we're in the thick of it now, this is the options list and it is long. hydrate. stretch. let's go ๐Ÿ’…


๐Ÿช hooks (aka the "do a thing at this exact moment" squad)

every single one of these wants you to hand it a hook โ€” you pick the moment, it runs your hook there. no cap.

  • --refork-post-jail โ€” fork() again after jailing. useful for jailing systems ๐ŸŽ€
  • --re-fork-post-jail โ€” fork() again after jailing. useful for jailing systems (yes bestie it's the same thing, it's an alias, we love a spare key ๐Ÿ”‘)
  • --hook-asap โ€” run the specified hook as soon as possible โšก
  • --hook-pre-jail โ€” run the specified hook before jailing
  • --hook-post-jail โ€” run the specified hook after jailing
  • --hook-in-jail โ€” run the specified hook in jail after initialization
  • --hook-as-root โ€” run the specified hook before privileges drop ๐Ÿ‘‘
  • --hook-as-user โ€” run the specified hook after privileges drop
  • --hook-as-user-atexit โ€” run the specified hook before app exit and reload
  • --hook-pre-app โ€” run the specified hook before app loading
  • --hook-post-app โ€” run the specified hook after app loading
  • --hook-post-fork โ€” run the specified hook after each fork ๐Ÿด
  • --hook-accepting โ€” run the specified hook after each worker enters the accepting phase
  • --hook-accepting1 โ€” run the specified hook after the first worker enters the accepting phase
  • --hook-accepting-once โ€” run the specified hook after each worker enters the accepting phase (once per-instance)
  • --hook-accepting1-once โ€” run the specified hook after the first worker enters the accepting phase (once per instance)
  • --hook-master-start โ€” run the specified hook when the Master starts ๐Ÿซก
  • --hook-touch โ€” run the specified hook when the specified file is touched (syntax: <file> <action>)
  • --hook-emperor-start โ€” run the specified hook when the Emperor starts ๐Ÿ‘‘
  • --hook-emperor-stop โ€” run the specified hook when the Emperor sends a stop message
  • --hook-emperor-reload โ€” run the specified hook when the Emperor sends a reload message
  • --hook-emperor-lost โ€” run the specified hook when the Emperor connection is lost ๐Ÿ˜ญ
  • --hook-as-vassal โ€” run the specified hook before exec()ing the vassal
  • --hook-as-emperor โ€” run the specified hook in the emperor after the vassal has been started
  • --hook-as-mule โ€” run the specified hook in each mule ๐Ÿด
  • --hook-as-gateway โ€” run the specified hook in each gateway
  • --after-request-hook โ€” run the specified function/symbol after each request
  • --after-request-call โ€” run the specified function/symbol after each request

๐Ÿƒ exec โ€” same moments, but it's a command this time

  • --exec-asap โ€” run the specified command as soon as possible โšก
  • --exec-pre-jail โ€” run the specified command before jailing
  • --exec-post-jail โ€” run the specified command after jailing
  • --exec-in-jail โ€” run the specified command in jail after initialization
  • --exec-as-root โ€” run the specified command before privileges drop ๐Ÿ‘‘
  • --exec-as-user โ€” run the specified command after privileges drop
  • --exec-as-user-atexit โ€” run the specified command before app exit and reload
  • --exec-pre-app โ€” run the specified command before app loading
  • --exec-post-app โ€” run the specified command after app loading
  • --exec-as-vassal โ€” run the specified command before exec()ing the vassal
  • --exec-as-emperor โ€” run the specified command in the emperor after the vassal has been started

๐Ÿ’พ mount โ€” filesystems, but make it scheduled

  • --mount-asap โ€” mount filesystem as soon as possible โšก
  • --mount-pre-jail โ€” mount filesystem before jailing
  • --mount-post-jail โ€” mount filesystem after jailing
  • --mount-in-jail โ€” mount filesystem in jail after initialization
  • --mount-as-root โ€” mount filesystem before privileges drop ๐Ÿ‘‘
  • --mount-as-vassal โ€” mount filesystem before exec()ing the vassal
  • --mount-as-emperor โ€” mount filesystem in the emperor after the vassal has been started

๐Ÿ—‘๏ธ umount โ€” the un-mounting of it all

  • --umount-asap โ€” unmount filesystem as soon as possible โšก
  • --umount-pre-jail โ€” unmount filesystem before jailing
  • --umount-post-jail โ€” unmount filesystem after jailing
  • --umount-in-jail โ€” unmount filesystem in jail after initialization
  • --umount-as-root โ€” unmount filesystem before privileges drop ๐Ÿ‘‘
  • --umount-as-vassal โ€” unmount filesystem before exec()ing the vassal
  • --umount-as-emperor โ€” unmount filesystem in the emperor after the vassal has been started

โณ waiting era โ€” bestie we are NOT starting until this thing exists

๐ŸŒ network interfaces (four whole names for the same vibe, iconic)

  • --wait-for-interface โ€” wait for the specified network interface to come up before running root hooks
  • --wait-for-interface-timeout โ€” set the timeout for wait-for-interface
  • --wait-interface โ€” wait for the specified network interface to come up before running root hooks
  • --wait-interface-timeout โ€” set the timeout for wait-for-interface
  • --wait-for-iface โ€” wait for the specified network interface to come up before running root hooks
  • --wait-for-iface-timeout โ€” set the timeout for wait-for-interface
  • --wait-iface โ€” wait for the specified network interface to come up before running root hooks
  • --wait-iface-timeout โ€” set the timeout for wait-for-interface

๐Ÿ“ filesystem stuff

  • --wait-for-fs โ€” wait for the specified filesystem item to appear before running root hooks
  • --wait-for-file โ€” wait for the specified file to appear before running root hooks
  • --wait-for-dir โ€” wait for the specified directory to appear before running root hooks
  • --wait-for-mountpoint โ€” wait for the specified mountpoint to appear before running root hooks
  • --wait-for-fs-timeout โ€” set the timeout for wait-for-fs/file/dir

๐Ÿ”Œ sockets

  • --wait-for-socket โ€” wait for the specified socket to be ready before loading apps
  • --wait-for-socket-timeout โ€” set the timeout for wait-for-socket

๐Ÿ“ž call โ€” like exec but it's a function, and it is picky about signatures

some of these care about the exact shape of the function you hand them. the ones with a number at the end? that's the arg count, iykyk. don't mix them up bestie ๐Ÿ’€

  • --call-asap โ€” call the specified function as soon as possible โšก
  • --call-pre-jail โ€” call the specified function before jailing
  • --call-post-jail โ€” call the specified function after jailing
  • --call-in-jail โ€” call the specified function in jail after initialization
  • --call-as-root โ€” call the specified function before privileges drop ๐Ÿ‘‘
  • --call-as-user โ€” call the specified function after privileges drop
  • --call-as-user-atexit โ€” call the specified function before app exit and reload
  • --call-pre-app โ€” call the specified function before app loading
  • --call-post-app โ€” call the specified function after app loading
  • --call-as-vassal โ€” call the specified function() before exec()ing the vassal
  • --call-as-vassal1 โ€” call the specified function(char *) before exec()ing the vassal
  • --call-as-vassal3 โ€” call the specified function(char *, uid_t, gid_t) before exec()ing the vassal
  • --call-as-emperor โ€” call the specified function() in the emperor after the vassal has been started
  • --call-as-emperor1 โ€” call the specified function(char *) in the emperor after the vassal has been started
  • --call-as-emperor2 โ€” call the specified function(char *, pid_t) in the emperor after the vassal has been started
  • --call-as-emperor4 โ€” call the specified function(char *, pid_t, uid_t, gid_t) in the emperor after the vassal has been started

๐Ÿ“„ config files โ€” feed me, bestie

  • --ini โ€” load config from ini file
  • -y, --yaml โ€” load config from yaml file
  • -y, --yml โ€” load config from yaml file
  • -j, --json โ€” load config from json file
  • -j, --js โ€” load config from json file

โš–๏ธ mode + weight + the socket behaviour knobs

  • --weight โ€” weight of the instance (used by clustering/lb/subscriptions)
  • --auto-weight โ€” set weight of the instance (used by clustering/lb/subscriptions) automatically ๐Ÿค–
  • --no-server โ€” force no-server mode
  • --command-mode โ€” force command mode
  • --no-defer-accept โ€” disable deferred-accept on sockets
  • --tcp-nodelay โ€” enable TCP NODELAY on each request
  • --so-keepalive โ€” enable TCP KEEPALIVEs ๐Ÿ’–
  • --so-send-timeout โ€” set SO_SNDTIMEO
  • --socket-send-timeout โ€” set SO_SNDTIMEO
  • --so-write-timeout โ€” set SO_SNDTIMEO
  • --socket-write-timeout โ€” set SO_SNDTIMEO
  • --socket-sndbuf โ€” set SO_SNDBUF
  • --socket-rcvbuf โ€” set SO_RCVBUF
  • --shutdown-sockets โ€” force calling shutdown() in addition to close() when sockets are destroyed

๐Ÿšง limits, memory, and the reload machinery

  • --limit-as โ€” limit processes address space/vsz
  • --limit-nproc โ€” limit the number of spawnable processes
  • --reload-on-as โ€” reload if address space is higher than specified megabytes
  • --reload-on-rss โ€” reload if rss memory is higher than specified megabytes
  • --evil-reload-on-as โ€” force the master to reload a worker if its address space is higher than specified megabytes ๐Ÿ˜ˆ
  • --evil-reload-on-rss โ€” force the master to reload a worker if its rss memory is higher than specified megabytes ๐Ÿ˜ˆ
  • --mem-collector-freq โ€” set the memory collector frequency when evil reloads are in place
  • --reload-on-fd โ€” reload if the specified file descriptor is ready
  • --brutal-reload-on-fd โ€” brutal reload if the specified file descriptor is ready ๐Ÿ’€
ngl "brutal" is doing a lot of heavy lifting in that name and it means what it says. read the label before you reach for it.
  • --ksm โ€” enable Linux KSM
  • --pcre-jit โ€” enable pcre jit (if available)
  • --never-swap โ€” lock all memory pages avoiding swapping

๐Ÿ‘† touch-* โ€” the "poke a file, get a reaction" collection

  • --touch-reload โ€” reload uWSGI if the specified file is modified/touched
  • --touch-workers-reload โ€” trigger reload of (only) workers if the specified file is modified/touched
  • --touch-mules-reload โ€” reload mules if the specified file is modified/touched ๐Ÿด
  • --touch-spoolers-reload โ€” reload spoolers if the specified file is modified/touched
  • --touch-chain-reload โ€” trigger chain reload if the specified file is modified/touched โ›“๏ธ
  • --touch-logrotate โ€” trigger logrotation if the specified file is modified/touched
  • --touch-logreopen โ€” trigger log reopen if the specified file is modified/touched
  • --touch-exec โ€” run command when the specified file is modified/touched (syntax: file command)
  • --touch-signal โ€” signal when the specified file is modified/touched (syntax: file signal)

๐Ÿฆ‹ fs-* โ€” filesystem object watches, the glow-up edition

  • --fs-reload โ€” graceful reload when the specified filesystem object is modified
  • --fs-brutal-reload โ€” brutal reload when the specified filesystem object is modified ๐Ÿ’€
  • --fs-signal โ€” raise a uwsgi signal when the specified filesystem object is modified (syntax: file signal)

and we are not done bestie, keep scrolling, there's more coming ๐Ÿ’–

  • --check-mountpoint โ€” destroys the instance if a filesystem is no longer reachable ๐Ÿ’€ (handy if you want reliable Fuse management, fr fr)
  • --mountpoint-check โ€” yeah same thing bestie: instance gets destroyed when a filesystem stops being reachable (good for reliable Fuse management) โœจ
  • --check-mount โ€” yep, again: destroy the instance if a filesystem is no more reachable (reliable Fuse management vibes ๐Ÿซถ)
  • --mount-check โ€” the fourth twin ๐Ÿ’… destroy the instance if a filesystem is no more reachable (useful for reliable Fuse management)
  • --propagate-touch โ€” over-engineering option for systems with flaky signal management ๐Ÿ˜ญ like it's giving "we fixed the thing by adding more thing"
  • --limit-post โ€” limit the request body ๐Ÿ›‘
  • --no-orphans โ€” automatically kills workers if the master dies ๐Ÿชฆ
โš ๏ธ bestie this one can be dangerous for availability, so know what you're doing before you turn it on
  • --prio โ€” set processes/threads priority ๐ŸŽš๏ธ
  • --cpu-affinity โ€” set cpu affinity ๐Ÿงฒ
  • --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 โ€” set the amount of allowed memory allocation (in megabytes) for the request body before it starts printing a warning ๐Ÿ‘€
  • --upload-progress โ€” enable creation of .json files in the specified directory during a file upload ๐Ÿ“
  • --no-default-app โ€” do not fallback to default app ๐Ÿ™…โ€โ™€๏ธ
  • --manage-script-name โ€” automatically rewrite SCRIPT_NAME and PATH_INFO โœ๏ธ
  • --ignore-script-name โ€” ignore SCRIPT_NAME ๐Ÿšซ
  • --catch-exceptions โ€” report exception as http output ๐Ÿ˜ฌ
discouraged, use only for testing โ€” literally it says so, don't @ me
  • --reload-on-exception โ€” reload a worker when an exception is raised ๐Ÿ”
  • --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 ๐Ÿงฌ
  • --exception-handler โ€” add an exception handler ๐Ÿงค
  • --enable-metrics โ€” enable metrics subsystem ๐Ÿ“Š
  • --metric โ€” add a custom metric โœจ
  • --metric-threshold โ€” add a metric threshold/alarm ๐Ÿšจ
  • --metric-alarm โ€” add a metric threshold/alarm (same energy, different name ๐Ÿ’…)
  • --alarm-metric โ€” add a metric threshold/alarm (yes queen, three names, one job ๐Ÿ‘‘)
  • --metrics-dir โ€” export metrics as text files to the specified directory ๐Ÿ—‚๏ธ
  • --metrics-dir-restore โ€” restore last value taken from the metrics dir โช
  • --metric-dir โ€” export metrics as text files to the specified directory (the shorter-flavored twin ๐ŸŒธ)
  • --metric-dir-restore โ€” restore last value taken from the metrics dir (also the shorter twin ๐ŸŒธ)
  • --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, same ๐Ÿ™ƒ)
  • --stats-http โ€” prefix stats server json output with http headers ๐ŸŒ
  • --stats-minified โ€” minify statistics json output ๐Ÿ—œ๏ธ
  • --stats-min โ€” minify statistics json output (identical twin, they're obsessed with each other ๐Ÿซถ)
  • --stats-push โ€” push the stats json to the specified destination ๐Ÿš€
  • --stats-pusher-default-freq โ€” set the default frequency of stats pushers โฑ๏ธ
  • --stats-pushers-default-freq โ€” set the default frequency of stats pushers (plural edition ๐Ÿงš)
  • --stats-no-cores โ€” disable generation of cores-related stats ๐Ÿง ๐Ÿšซ
  • --stats-no-metrics โ€” do not include metrics in stats output ๐Ÿšท
  • --multicast โ€” subscribe to 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 โ€” became a member of a legion โš”๏ธ
  • --legion-mcast โ€” became 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 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 ๐Ÿชฆ
  • --legion-skew-tolerance โ€” set the clock skew tolerance of 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 new node joining legion ๐Ÿซ‚
  • --legion-node-left โ€” action to call node leaving legion ๐Ÿ‘‹
  • --legion-quorum โ€” set the quorum of a legion ๐Ÿ—ณ๏ธ
  • --legion-scroll โ€” set the scroll of a legion ๐Ÿ“œ
  • --legion-scroll-max-size โ€” set max size of legion scroll buffer ๐Ÿ“œโฌ†๏ธ
  • --legion-scroll-list-max-size โ€” set max size of legion scroll list buffer ๐Ÿ“œ๐Ÿ“‹
  • --subscriptions-sign-check โ€” set digest algorithm and certificate directory for secured subscription system ๐Ÿ”
  • --subscriptions-sign-check-tolerance โ€” set the maximum tolerance (in seconds) of clock skew for secured subscription system โฑ๏ธ๐Ÿ”
  • --subscriptions-sign-skip-uid โ€” skip 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 load balancing algorithm for the subscription system โš–๏ธ
  • --subscription-dotsplit โ€” try to fallback to the next part (dot based) in 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 ๐Ÿง 
  • --subscribe-freq โ€” send subscription announce at the specified interval ๐Ÿ“ฃ
  • --subscription-tolerance โ€” set tolerance for subscription servers ๐Ÿค
  • --unsubscribe-on-graceful-reload โ€” force unsubscribe request even during graceful reload ๐Ÿšช
  • --start-unsubscribed โ€” configure subscriptions but do not send them (useful with master fifo) ๐Ÿค
  • --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 ๐Ÿ—ฃ๏ธ๐Ÿ”’
  • --ssl-verify-depth โ€” set maximum certificate verification depth ๐Ÿ•ณ๏ธ
  • --sni โ€” add an SNI-governed SSL context ๐Ÿชช
  • --sni-dir โ€” check for cert/key/client_ca file in the specified directory and create a sni/ssl context on demand ๐Ÿ“‚
  • --sni-dir-ciphers โ€” set ssl ciphers for sni-dir option ๐Ÿ”ค
  • --ssl-enable3 โ€” enable SSLv3 (insecure) ๐Ÿ˜ฑ
  • --ssl-enable-sslv3 โ€” enable SSLv3 (insecure) ๐Ÿ˜ฑ
  • --ssl-enable-tlsv1 โ€” enable TLSv1 (insecure) ๐Ÿ˜ฑ
  • --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 ๐Ÿ’ฃ๐Ÿ˜ด
  • --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 specified cores โšก
  • --max-fd โ€” set maximum number of file descriptors (requires root privileges) ๐Ÿ‘‘
  • --logto โ€” set logfile/udp address ๐Ÿชต
  • --logto2 โ€” log to specified file or udp address after privileges drop ๐Ÿชต
  • --log-format โ€” set advanced format for request logging ๐ŸŽจ
  • --logformat โ€” set advanced format for request logging ๐ŸŽจ
  • --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 ๐Ÿ“
  • --logger โ€” set/append a logger ๐Ÿ“
  • --logger-list โ€” list enabled loggers ๐Ÿ“‹
  • --loggers-list โ€” list enabled loggers ๐Ÿ“‹
  • --threaded-logger โ€” offload log writing to a thread ๐Ÿงต
  • --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 ๐Ÿ•ณ๏ธ
  • --log-filter โ€” show only log lines matching the specified regexp ๐Ÿ”Ž
  • --log-route โ€” log to the specified named logger if regexp applied on logline matches ๐Ÿ›ฃ๏ธ
  • --log-req-route โ€” log requests to the specified named logger if regexp applied on logline matches ๐Ÿ›ฃ๏ธ
  • --use-abort โ€” call abort() on segfault/fpe, could be useful for generating a core dump ๐Ÿ’ฅ
  • --alarm โ€” create a new alarm, syntax: <alarm> <plugin:args> โฐ
  • --alarm-cheap โ€” use main alarm thread rather than create dedicated threads for curl-based alarms ๐Ÿช™
  • --alarm-freq โ€” tune the anti-loop alarm system (default 3 seconds) ๐Ÿ”
  • --alarm-fd โ€” raise the specified alarm when an fd is read for read (by default it reads 1 byte, set 8 for eventfd) ๐Ÿ“Ÿ
  • --alarm-segfault โ€” raise the specified alarm when the segmentation fault handler is executed ๐Ÿšจ

okay and that's the end of this chunk bestie, more coming, stay tuned ๐Ÿ’–

  • --segfault-alarm โ€” the moment the segmentation fault handler fires, raise the alarm you named. yes bestie, segfaults get their own โœจklaxonโœจ
  • --alarm-backlog โ€” raise the specified alarm when the socket backlog queue is full ๐Ÿ˜ญ
  • --backlog-alarm โ€” same energy, same job: raise the specified alarm when the socket backlog queue is full. it's the same option, just a different alias ๐Ÿซถ
  • --lq-alarm โ€” raise the specified alarm when the socket backlog queue is full ๐Ÿ’–
  • --alarm-lq โ€” raise the specified alarm when the socket backlog queue is full ๐ŸŒธ
  • --alarm-listen-queue โ€” raise the specified alarm when the socket backlog queue is full ๐Ÿ’…
  • --listen-queue-alarm โ€” raise the specified alarm when the socket backlog queue is full โœจ
  • --log-alarm โ€” when a log line matches your regexp, raise the specified alarm. syntax: <alarm>[,alarm...] <regexp> ๐Ÿ”ฅ
  • --alarm-log โ€” same thing, different name order: raise the specified alarm when a log line matches the specified regexp. syntax: <alarm>[,alarm...] <regexp>
  • --not-log-alarm โ€” the opposite vibe: skip the specified alarm when a log line matches the specified regexp. syntax: <alarm>[,alarm...] <regexp> ๐Ÿ™ˆ
  • --not-alarm-log โ€” skip the specified alarm when a log line matches the specified regexp. syntax: <alarm>[,alarm...] <regexp>
  • --alarm-list โ€” show me all the enabled alarms ๐Ÿ‘‘
  • --alarms-list โ€” also lists enabled alarms. twins fr fr ๐Ÿ’œ
  • --alarm-msg-size โ€” set the max size of an alarm message. default is 8192 ๐Ÿ“
  • --log-master โ€” hand the logging off to the master process. delegation, main character energy โœจ
  • --log-master-bufsize โ€” set the buffer size for the master logger. heads up bestie: bigger log messages will be truncated ๐Ÿ’€
  • --log-master-stream โ€” create the master logpipe as SOCK_STREAM
  • --log-master-req-stream โ€” create the master requests logpipe as SOCK_STREAM
  • --log-reopen โ€” reopen the log after a reload ๐Ÿ”
  • --log-truncate โ€” truncate the log on startup. fresh slate, clean girl aesthetic ๐ŸŽ€
  • --log-maxsize โ€” set the maximum logfile size
  • --log-backupname โ€” set the logfile name to use after rotation
  • --logdate โ€” prefix your logs with a date, or with a strftime string ๐Ÿ—“๏ธ
  • --log-date โ€” same: prefix logs with a date or a strftime string
  • --log-prefix โ€” prefix logs with a string of your choosing
  • --log-zero โ€” log responses that have no body at all ๐Ÿซฅ
  • --log-slow โ€” log any request slower than the number of milliseconds you specify ๐ŸŒ
  • --log-4xx โ€” log requests that came back with a 4xx response
  • --log-5xx โ€” log requests that came back with a 5xx response
  • --log-big โ€” log requestes bigger than the specified size (the typo stays, it's canon now ๐Ÿ’…)
  • --log-sendfile โ€” log sendfile requests
  • --log-ioerror โ€” log requests that hit io errors
  • --log-micros โ€” report response time in microseconds instead of milliseconds. precision era โฑ๏ธ
  • --log-x-forwarded-for โ€” use the ip from the X-Forwarded-For header instead of REMOTE_ADDR

  • --master-as-root โ€” leave the master process running as root ๐Ÿ‘‘
  • --drop-after-init โ€” run the privileges drop after plugin initialization. note: this one is superseded by drop-after-apps
  • --drop-after-apps โ€” run the privileges drop after apps loading. note: this one is superseded by master-as-root
  • --force-cwd โ€” force the initial working directory to the value you give it
  • --binsh โ€” override /bin/sh (it's used by exec hooks, and it always falls back to /bin/sh)
  • --chdir โ€” chdir to the specified directory before apps loading
  • --chdir2 โ€” chdir to the specified directory after apps loading
  • --lazy โ€” set lazy mode: load apps in the workers instead of the master ๐Ÿ˜ด
  • --lazy-apps โ€” load apps in each worker instead of the master
  • --cheap โ€” set cheap mode: workers only get spawned after the very first request ๐Ÿช™
  • --cheaper โ€” set cheaper mode, aka adaptive process spawning ๐Ÿ“ˆ
  • --cheaper-initial โ€” set the initial number of processes to spawn in cheaper mode
  • --cheaper-algo โ€” choose which algorithm gets used for adaptive process spawning
  • --cheaper-step โ€” how many additional processes to spawn at each overload
  • --cheaper-overload โ€” increase workers after the specified overload
  • --cheaper-algo-list โ€” list the enabled cheapers algorithms
  • --cheaper-algos-list โ€” list the enabled cheapers algorithms ๐ŸŒˆ
  • --cheaper-list โ€” list the enabled cheapers algorithms (yes, all three names, we love a triple threat)
  • --cheaper-rss-limit-soft โ€” don't spawn new workers if the total resident memory usage of all workers is higher than this limit
  • --cheaper-rss-limit-hard โ€” if the total workers resident memory usage is higher, try to stop workers ๐Ÿ›‘
  • --idle โ€” set idle mode: put uWSGI into cheap mode after a period of inactivity
  • --die-on-idle โ€” shut uWSGI down when it goes idle. dramatic exit, respect ๐Ÿ’€
  • --mount โ€” load an application under a mountpoint
  • --worker-mount โ€” load an application under a mountpoint in the specified worker, or after workers spawn
  • --threads โ€” run each worker in prethreaded mode with the number of threads you specify ๐Ÿงต
  • --thread-stacksize โ€” set threads stacksize
  • --threads-stacksize โ€” set threads stacksize
  • --thread-stack-size โ€” set threads stacksize
  • --threads-stack-size โ€” set threads stacksize (four aliases, one destiny โœจ)
  • --vhost โ€” enable virtualhosting mode, based on the SERVER_NAME variable
  • --vhost-host โ€” enable virtualhosting mode, based on the HTTP_HOST variable

routing time, bestie, this is where it gets fun ๐Ÿ›ฃ๏ธ

  • --route โ€” add a route
  • --route-host โ€” add a route based on the Host header
  • --route-uri โ€” add a route based on REQUEST_URI
  • --route-qs โ€” add a route based on QUERY_STRING
  • --route-remote-addr โ€” add a route based on REMOTE_ADDR
  • --route-user-agent โ€” add a route based on HTTP_USER_AGENT
  • --route-remote-user โ€” add a route based on REMOTE_USER
  • --route-referer โ€” add a route based on HTTP_REFERER
  • --route-label โ€” add a routing label (for use with goto)
  • --route-if โ€” add a route based on a condition
  • --route-if-not โ€” add a route based on a condition, but the negate version ๐Ÿ™ƒ
  • --route-run โ€” always run the specified route action
  • --final-route โ€” add a final route
  • --final-route-status โ€” add a final route for the specified status
  • --final-route-host โ€” add a final route based on the Host header
  • --final-route-uri โ€” add a final route based on REQUEST_URI
  • --final-route-qs โ€” add a final route based on QUERY_STRING
  • --final-route-remote-addr โ€” add a final route based on REMOTE_ADDR
  • --final-route-user-agent โ€” add a final route based on HTTP_USER_AGENT
  • --final-route-remote-user โ€” add a final route based on REMOTE_USER
  • --final-route-referer โ€” add a final route based on HTTP_REFERER
  • --final-route-label โ€” add a final routing label (for use with goto)
  • --final-route-if โ€” add a final route based on a condition
  • --final-route-if-not โ€” add a final route based on a condition, negate version ๐Ÿ™ƒ
  • --final-route-run โ€” always run the specified final route action
  • --error-route โ€” add an error route
  • --error-route-status โ€” add an error route for the specified status
  • --error-route-host โ€” add an error route based on the Host header
  • --error-route-uri โ€” add an error route based on REQUEST_URI
  • --error-route-qs โ€” add an error route based on QUERY_STRING
  • --error-route-remote-addr โ€” add an error route based on REMOTE_ADDR
  • --error-route-user-agent โ€” add an error route based on HTTP_USER_AGENT
  • --error-route-remote-user โ€” add an error route based on REMOTE_USER
  • --error-route-referer โ€” add an error route based on HTTP_REFERER
  • --error-route-label โ€” add an error routing label (for use with goto)
  • --error-route-if โ€” add an error route based on a condition
  • --error-route-if-not โ€” add an error route based on a condition, negate version ๐Ÿ™ƒ
  • --error-route-run โ€” always run the specified error route action
  • --response-route โ€” add a response route
  • --response-route-status โ€” add a response route for the specified status
  • --response-route-host โ€” add a response route based on the Host header
  • --response-route-uri โ€” add a response route based on REQUEST_URI
  • --response-route-qs โ€” add a response route based on QUERY_STRING
  • --response-route-remote-addr โ€” add a response route based on REMOTE_ADDR
  • --response-route-user-agent โ€” add a response route based on HTTP_USER_AGENT
  • --response-route-remote-user โ€” add a response route based on REMOTE_USER
  • --response-route-referer โ€” add a response route based on HTTP_REFERER
  • --response-route-label โ€” add a response routing label (for use with goto)
  • --response-route-if โ€” add a response route based on a condition
  • --response-route-if-not โ€” add a response route based on a condition, negate version ๐Ÿ™ƒ
  • --response-route-run โ€” always run the specified response route action
  • --router-list โ€” list the enabled routers ๐Ÿ“‹
  • --routers-list โ€” list the enabled routers (same, just plural-coded)

  • --error-page-403 โ€” add an error page (html) for the managed 403 response ๐Ÿšซ
  • --error-page-404 โ€” add an error page (html) for the managed 404 response ๐Ÿซฅ
  • --error-page-500 โ€” add an error page (html) for the managed 500 response ๐Ÿ’ฅ
  • --websockets-ping-freq โ€” set the frequency (in seconds) of websockets automatic ping packets
  • --websocket-ping-freq โ€” set the frequency (in seconds) of websockets automatic ping packets ๐Ÿ“
  • --websockets-pong-tolerance โ€” set the tolerance (in seconds) of the websockets ping/pong subsystem
  • --websocket-pong-tolerance โ€” set the tolerance (in seconds) of the websockets ping/pong subsystem
  • --websockets-max-size โ€” set the max allowed size of websocket messages, in Kbytes. default is 1024 ๐Ÿ“ฆ
  • --websocket-max-size โ€” set the max allowed size of websocket messages, in Kbytes. default is 1024
  • --chunked-input-limit โ€” set the max size of a chunked input part. default is 1MB, in bytes
  • --chunked-input-timeout โ€” set the default timeout for chunked input โณ
  • --clock โ€” set a clock source ๐Ÿ•ฐ๏ธ
  • --clock-list โ€” list the enabled clocks
  • --clocks-list โ€” list the enabled clocks (plural edition, iconic)
  • --add-header โ€” automatically add HTTP headers to the response
  • --rem-header โ€” automatically remove the specified HTTP header from the response
  • --del-header โ€” automatically remove the specified HTTP header from the response โœ‚๏ธ
  • --collect-header โ€” store the specified response header in a request var. syntax: header var ๐ŸŽ€
  • --response-header-collect โ€” bestie, this one stashes a response header into a request var ๐Ÿ’พ syntax is header var โ€” header first, var second, don't flip them or it's giving chaos.
  • --pull-header โ€” same idea but feral: it stores the specified response header in a request var AND yoinks it out of the response entirely ๐Ÿ˜ญ syntax again is header var.
  • --check-static โ€” go look for static files in the directory you name. that's it, that's the whole vibe ๐ŸŽ€
  • --check-static-docroot โ€” same energy but it checks the requested DOCUMENT_ROOT instead of a dir you picked โœจ
  • --static-check โ€” literally the twin of --check-static: check for static files in the specified directory ๐Ÿฆ‹
  • --static-map โ€” maps a mountpoint to a static directory (or a file) ๐Ÿ—บ๏ธ iconic.
  • --static-map2 โ€” like --static-map except it completely appends the requested resource to the docroot. no cap, that's the difference ๐Ÿ‘‘
  • --static-skip-ext โ€” skips the extension you name from staticfile checks ๐Ÿ™ˆ
  • --static-index โ€” if someone requests a directory, go search for the file you specified ๐Ÿ’…
  • --static-safe โ€” if the file lives under the path you give, skip the security checks. yes, really, that's what it does ๐Ÿซถ
  • --static-cache-paths โ€” drops resolved paths into the uWSGI cache for however many seconds you say โฑ๏ธ
  • --static-cache-paths-name โ€” use the cache you name for those static paths ๐Ÿงบ
  • --mimefile โ€” sets the mime types file path, and the default is /etc/mime.types ๐Ÿ“„
  • --mime-file โ€” same thing, different spelling, default still /etc/mime.types ๐Ÿ“„
  • --static-expires-type โ€” sets the Expires header based on content type โณ
  • --static-expires-type-mtime โ€” sets the Expires header based on content type and the file mtime ๐Ÿ”ฅ
  • --static-expires โ€” sets the Expires header based on a filename regexp ๐Ÿงš
  • --static-expires-mtime โ€” Expires header based on filename regexp and file mtime, the deluxe combo โœจ
  • --static-expires-uri โ€” sets the Expires header based on a REQUEST_URI regexp ๐ŸŒˆ
  • --static-expires-uri-mtime โ€” Expires header based on REQUEST_URI regexp and file mtime ๐Ÿ’–
  • --static-expires-path-info โ€” sets the Expires header based on a PATH_INFO regexp ๐ŸŒธ
  • --static-expires-path-info-mtime โ€” Expires header based on PATH_INFO regexp and file mtime, yes the pattern continues and yes we love consistency โญ
  • --static-gzip โ€” if the regexp you supply matches the static file translation, it goes looking for a gzip version ๐Ÿ—œ๏ธ
  • --static-gzip-all โ€” checks for a gzip version of all requested static files. all of them. every single one ๐Ÿ’€
  • --static-gzip-dir โ€” checks for a gzip version of all requested static files in the dir/prefix you specify ๐Ÿ“
  • --static-gzip-prefix โ€” same deal: checks for a gzip version of all requested static files in the specified dir/prefix ๐Ÿ“
  • --static-gzip-ext โ€” checks for a gzip version of all requested static files with the ext/suffix you give ๐Ÿ”–
  • --static-gzip-suffix โ€” again, twin behavior: checks for a gzip version of all requested static files with the specified ext/suffix ๐Ÿ”–
  • --honour-range โ€” turns on support for the HTTP Range header ๐Ÿ“
  • --offload-threads โ€” sets how many offload threads to spawn โ€” that's per-worker, and the default is 0 ๐Ÿงต
  • --offload-thread โ€” the singular spelling of the exact same thing: offload threads to spawn, per-worker, default 0 ๐Ÿงต
  • --file-serve-mode โ€” sets the static file serving mode ๐Ÿฝ๏ธ
  • --fileserve-mode โ€” also sets the static file serving mode. same setting, no space in the name ๐Ÿฝ๏ธ
  • --disable-sendfile โ€” kills sendfile() and makes you rely on the boring old read()/write() instead ๐Ÿ˜ด
  • --check-cache โ€” checks for response data in the cache you specify โ€” leave it empty for the default cache ๐Ÿ—„๏ธ
  • --close-on-exec โ€” sets close-on-exec on connection sockets. could be required if you're spawning processes in requests ๐Ÿ‘ถ
  • --close-on-exec2 โ€” sets close-on-exec on server sockets. also possibly required for spawning processes in requests ๐Ÿ‘ถ
  • --mode โ€” set uWSGI custom mode ๐ŸŽ›๏ธ
  • --env โ€” set environment variable ๐ŸŒฑ
  • --envdir โ€” loads a daemontools compatible envdir ๐Ÿ“‚
  • --early-envdir โ€” loads a daemontools compatible envdir ASAP, no waiting around โšก
  • --unenv โ€” unset environment variable ๐Ÿšซ
  • --vacuum โ€” tries to remove all of the generated file/sockets ๐Ÿงน spring cleaning fr fr
  • --file-write โ€” writes the content you specify to the file you specify (syntax: file=value) before privileges drop โš ๏ธ order matters here bestie.
  • --cgroup โ€” puts the processes in the cgroup you name ๐Ÿช†
  • --cgroup-opt โ€” set value in specified cgroup option โš™๏ธ
  • --cgroup-dir-mode โ€” sets permission for the cgroup directory, and the default is 700 ๐Ÿ”
  • --namespace โ€” run in a new namespace under the specified rootfs ๐Ÿซง
  • --namespace-keep-mount โ€” keeps the mountpoint you specify in your namespace ๐Ÿ“Œ
  • --ns โ€” run in a new namespace under the specified rootfs ๐Ÿซง
  • --namespace-net โ€” add network namespace ๐ŸŒ
  • --ns-net โ€” add network namespace ๐ŸŒ
  • --enable-proxy-protocol โ€” enables PROXY1 protocol support, and heads up: it's only for http parsers ๐Ÿ“จ
  • --reuse-port โ€” enables the REUSE_PORT flag on the socket, and that's BSD only ๐Ÿก
  • --tcp-fast-open โ€” enables the TCP_FASTOPEN flag on TCP sockets with the qlen value you specify ๐Ÿš€
  • --tcp-fastopen โ€” enables the TCP_FASTOPEN flag on TCP sockets with the specified qlen value ๐Ÿš€
  • --tcp-fast-open-client โ€” uses sendto(..., MSG_FASTOPEN, ...) instead of connect() if it's supported ๐ŸŽ๏ธ
  • --tcp-fastopen-client โ€” same: uses 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 with key=val syntax ๐Ÿ”‘
  • --unique-cron โ€” add a unique cron task ๐ŸŒŸ
  • --cron-harakiri โ€” sets the maximum time in seconds we wait for a cron command to complete โŒ›
  • --legion-cron โ€” adds a cron task that's runnable only when the instance is a lord of the specified legion ๐Ÿ‘‘
  • --cron-legion โ€” adds a cron task runnable only when the instance is a lord of the specified legion ๐Ÿ‘‘
  • --unique-legion-cron โ€” adds a unique cron task runnable only when the instance is a lord of the specified legion ๐ŸŒŸ๐Ÿ‘‘
  • --unique-cron-legion โ€” adds a unique cron task runnable only when the instance is a lord of the specified legion ๐ŸŒŸ๐Ÿ‘‘
  • --loop โ€” select the uWSGI loop engine ๐Ÿ”
  • --loop-list โ€” lists enabled loop engines ๐Ÿ“‹
  • --loops-list โ€” lists enabled loop engines ๐Ÿ“‹
  • --worker-exec โ€” run the command you specify as a worker ๐Ÿƒ
  • --worker-exec2 โ€” run the specified command as worker, but this time after the post_fork hook ๐Ÿช
  • --attach-daemon โ€” attaches a command/daemon to the master process, and important: the command has to not go in the background โš ๏ธ
  • --attach-control-daemon โ€” attaches a command/daemon to the master process (again, the command has to not go in background), and when the daemon dies, the master dies too ๐Ÿ’€ lowkey dramatic but that's the deal.
  • --smart-attach-daemon โ€” attaches a command/daemon to the master process managed by a pidfile, and here the command has to daemonize ๐Ÿง 
  • --smart-attach-daemon2 โ€” attaches a command/daemon to the master process managed by a pidfile, and here the command has to NOT daemonize ๐Ÿง 
  • --legion-attach-daemon โ€” same as --attach-daemon but the daemon runs only on the legion lord node ๐Ÿ‘‘
  • --legion-smart-attach-daemon โ€” same as --smart-attach-daemon but the daemon runs only on the legion lord node ๐Ÿ‘‘
  • --legion-smart-attach-daemon2 โ€” same as --smart-attach-daemon2 but the daemon runs only on the legion lord node ๐Ÿ‘‘
  • --daemons-honour-stdin โ€” do not change the stdin of external daemons to /dev/null ๐Ÿ™…
  • --attach-daemon2 โ€” the attach-daemon keyval variant, and yep it supports smart modes too ๐Ÿ”‘
  • --plugins โ€” load uWSGI plugins ๐Ÿงฉ
  • --plugin โ€” load uWSGI plugins ๐Ÿงฉ
  • --need-plugins โ€” load uWSGI plugins and exit on error ๐Ÿšช
  • --need-plugin โ€” load uWSGI plugins, exit on error ๐Ÿšช
  • --plugins-dir โ€” adds a directory to the uWSGI plugin search path ๐Ÿ”
  • --plugin-dir โ€” adds a directory to the uWSGI plugin search path ๐Ÿ”
  • --plugins-list โ€” lists enabled plugins ๐Ÿ“‹
  • --plugin-list โ€” lists enabled plugins ๐Ÿ“‹
  • --autoload โ€” tries to automatically load plugins when unknown options are found ๐Ÿช„
  • --dlopen โ€” blindly loads a shared library ๐Ÿ™ˆ no thoughts, just vibes.
  • --allowed-modifiers โ€” comma separated list of allowed modifiers โœ…
  • --remap-modifier โ€” remaps a request modifier from one id to another ๐Ÿ”€
  • --dump-options โ€” dumps the full list of available options ๐Ÿ—ƒ๏ธ
  • --show-config โ€” shows the current config reformatted as ini ๐Ÿ“œ
  • --binary-append-data โ€” returns the content of a resource to stdout for appending to a uwsgi binary (for data:// usage) ๐Ÿ“Ž
  • --print โ€” simple print ๐Ÿ–จ๏ธ
  • --iprint โ€” simple print, but the immediate version โšก
  • --exit โ€” force exit() of the instance ๐Ÿšช
  • --cflags โ€” reports uWSGI CFLAGS, which is useful for building external plugins ๐Ÿ› ๏ธ
  • --dot-h โ€” dumps the uwsgi.h used for building the core, useful for building external plugins ๐Ÿ“ฆ
  • --config-py โ€” dumps the uwsgiconfig.py used for building the core, also useful for building external plugins ๐Ÿ
  • --build-plugin โ€” builds a uWSGI plugin for the current binary ๐Ÿ”จ
  • --version โ€” prints the uWSGI version ๐Ÿท๏ธ
  • --response-headers-limit โ€” sets the response header maximum size, default: 64k ๐Ÿ“
  • --wsgi-file โ€” load a .wsgi file ๐Ÿ
  • --file โ€” load a .wsgi file ๐Ÿ
  • --eval โ€” eval python code ๐Ÿงช
  • -w|--module โ€” load a WSGI module ๐Ÿ“ฆ
  • -w|--wsgi โ€” load a WSGI module ๐Ÿ“ฆ
  • --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 python program name ๐Ÿท๏ธ
  • --py-program-name โ€” set python program name ๐Ÿท๏ธ
  • --pythonpath โ€” adds a directory (or glob) to pythonpath ๐Ÿ›ค๏ธ
  • --python-path โ€” adds a directory (or glob) to pythonpath ๐Ÿ›ค๏ธ
  • --pp โ€” adds a directory (or glob) to pythonpath ๐Ÿ›ค๏ธ
  • --pymodule-alias โ€” add a python alias module ๐Ÿชž
  • --post-pymodule-alias โ€” adds a python module alias after uwsgi module initialization โญ๏ธ
  • --import โ€” import a python module ๐Ÿ“ฅ
  • --pyimport โ€” import a python module ๐Ÿ“ฅ
  • --py-import โ€” import a python module ๐Ÿ“ฅ
  • --python-import โ€” import a python module ๐Ÿ“ฅ
  • --shared-import โ€” import a python module in all of the processes ๐Ÿ‘ฏ
  • --shared-pyimport โ€” import a python module in all of the processes ๐Ÿ‘ฏ
  • --shared-py-import โ€” import a python module in all of the processes ๐Ÿ‘ฏ
  • --shared-python-import โ€” import a python module in all of the processes ๐Ÿ‘ฏ
  • --spooler-import โ€” import a python module in the spooler ๐ŸŒ€
  • --spooler-pyimport โ€” import a python module in the spooler (yep, same vibe, different spelling, bestie)
  • --spooler-py-import โ€” import a python module in the spooler (another alias, they really said โ€œlet me give you optionsโ€)
  • --spooler-python-import โ€” import a python module in the spooler (the last of the spooler-import quadruplets)
  • --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 โ€” run a python script in the uWSGI environment ๐Ÿ
  • --py โ€” run a python script in the uWSGI environment โœจ
  • --pyrun โ€” run a python script in the uWSGI environment ๐Ÿƒโ€โ™€๏ธ
  • --py-tracebacker โ€” enable the uWSGI python tracebacker ๐Ÿ”
  • --py-auto-reload โ€” monitor python modules mtime to trigger reload (use only in development) โš ๏ธ
  • --py-autoreload โ€” monitor python modules mtime to trigger reload (use only in development) โš ๏ธ
  • --python-auto-reload โ€” monitor python modules mtime to trigger reload (use only in development) โš ๏ธ
  • --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 โ€” set the strategy for allocating/deallocating the WSGI env ๐Ÿง 
  • --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 โ€” accept CPython buffer-compliant objects as WSGI response in addition to string/bytes ๐Ÿงบ
  • --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 โ€” override sys.executable value ๐Ÿ
  • --py-sys-executable โ€” override sys.executable value ๐Ÿ

that's the whole manual page, bestie! this was UWSGI_PYTHON311(1) from uwsgi_python311 version 2.0.21-debian, dated May 2023. go forth and slay your python web apps ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from