UWSGI_EMPEROR_PG(1)

๐Ÿ’– UWSGI_EMPEROR_PG โ€” the manual, but make it slay โœจ

okay so bestie, welcome to the uwsgi_emperor_pg(1) manual page. this is a User Command, and honestly? it's giving legend behaviour. no cap. let me walk you through it like we're texting at 2am and i'm obsessed with this tool. ๐Ÿซถ


โœจ NAME โœจ

uwsgi_emperor_pg โ€” a fast (pure C, she's native fr fr), self-healing, developer-friendly WSGI server. periodt. ๐Ÿ’…


๐ŸŒˆ SYNOPSIS ๐ŸŒˆ

uwsgi-core [options...]

that's it. that's the whole vibe. you run uwsgi-core and then sprinkle options on top like glitter. ๐ŸŽ€


๐Ÿ’œ DESCRIPTION ๐Ÿ’œ

okay this part is LONG so grab a snack ๐Ÿ“. it's basically a giant list of every option she accepts, and bestie, she accepts a lot. each one is a little gift. let's go.

  • -s, --socket โ€” bind to the specified UNIX/TCP socket using the default protocol. lowkey the intro option, the main character energy of sockets. โœจ
  • -s, --uwsgi-socket โ€” bind to the specified UNIX/TCP socket, but this time using the uwsgi protocol. yes she shares the short flag, that's just how she is. ๐Ÿ’…
  • --suwsgi-socket โ€” bind to the specified UNIX/TCP socket using the uwsgi protocol over SSL. secure AND slaying. ๐Ÿ”
  • --ssl-socket โ€” bind to the specified UNIX/TCP socket using the uwsgi protocol over SSL. same energy, different flag name, iconic.
  • --http-socket โ€” bind to the specified UNIX/TCP socket using the HTTP protocol. the classic. the original. we love her. ๐ŸŒ
  • --http-socket-modifier1 โ€” force the specified modifier1 when using HTTP protocol. you decide the number, she obeys. no questions. ๐ŸŽฏ
  • --http-socket-modifier2 โ€” force the specified modifier2 when using HTTP protocol. twin of the above, equally valid. ๐Ÿ’–
  • --http11-socket โ€” bind to the specified UNIX/TCP socket using HTTP 1.1 (Keep-Alive) protocol. she stays connected, she's loyal fr fr.
  • --https-socket โ€” bind to the specified UNIX/TCP socket using HTTPS protocol. locked down and gorgeous. ๐Ÿ”’
  • --https-socket-modifier1 โ€” force the specified modifier1 when using HTTPS protocol. modifier magic โœจ
  • --https-socket-modifier2 โ€” force the specified modifier2 when using HTTPS protocol. the sequel. ๐ŸŽฌ
  • --fastcgi-socket โ€” bind to the specified UNIX/TCP socket using FastCGI protocol. fast AND CGI. she's efficient okay ๐Ÿ˜ญ
  • --fastcgi-nph-socket โ€” bind to the specified UNIX/TCP socket using FastCGI protocol in nph mode. nph stands for non-parsed headers, and that's just facts, not me guessing. ๐Ÿงš
  • --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. another protocol, another slay. ๐ŸŒธ
  • --scgi-nph-socket โ€” bind to the specified UNIX/TCP socket using SCGI protocol in nph mode. same nph situation as above.
  • --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. unfiltered. honest. she's not like other sockets. ๐Ÿ’€
  • --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). she persists. obviously. ๐Ÿ‘‘
  • --protocol โ€” force the specified protocol for default sockets. you're in charge of the vibe check here.
  • --socket-protocol โ€” force the specified protocol for default sockets. same energy, twin flag. ๐Ÿซถ
  • --shared-socket โ€” create a shared socket for advanced jailing or ipc. for when things get โœจadvancedโœจ.
  • --undeferred-shared-socket โ€” create a shared socket for advanced jailing or ipc, but in undeferred mode. the non-deferred remix. ๐ŸŽง
  • -p, --processes โ€” spawn the specified number of workers/processes. how many besties you want on the job.
  • -p, --workers โ€” spawn the specified number of workers/processes. yes, this shares the -p flag with --processes. they're twins. deal with it. ๐Ÿ’…
  • --thunder-lock โ€” serialize accept() usage (if possible). thunder. lock. dramatic AND functional. โšก
  • -t, --harakiri โ€” set the harakiri timeout. if a request is taking too long, she ends it. respectfully. ๐Ÿ—ก๏ธ
  • --harakiri-verbose โ€” enable verbose mode for harakiri. so when she takes the sword, she narrates it. ๐Ÿ’€
  • --harakiri-graceful-timeout โ€” the interval between a graceful harakiri attempt and a sigkill. so like, she asks nicely first, then it gets real.
  • --harakiri-graceful-signal โ€” use this signal instead of sigterm for graceful harakiri attempts. you pick the signal, she uses it.
  • --harakiri-queue-threshold โ€” only trigger harakiri if the queue is greater than this threshold. so she only gets dramatic when the queue is actually struggling. ๐Ÿ’…
  • --harakiri-no-arh โ€” do not enable harakiri during after-request-hook. give the hook some space bestie.
  • --no-harakiri-arh โ€” do not enable harakiri during after-request-hook. same as above, different spelling, both valid. โœจ
  • --no-harakiri-after-req-hook โ€” do not enable harakiri during after-request-hook. trio of twin flags because she's extra like that. ๐Ÿ˜Œ
  • --backtrace-depth โ€” set the backtrace depth. for when you need to see how deep the drama really goes. ๐Ÿ”
  • --mule-harakiri โ€” set the harakiri timeout for mule tasks. the mules get their own harakiri rules. iconic. ๐Ÿด
  • -x, --xmlconfig โ€” load config from an xml file. old school but still cute. ๐Ÿ“„
  • -x, --xml โ€” load config from xml file. same thing, she has two names, she's mysterious. ๐ŸŒˆ
  • --config โ€” load configuration using the pluggable system. flexible queen. ๐ŸŽ€
  • --fallback-config โ€” re-exec uwsgi with the specified config when exit code is 1. a backup plan, because she plans ahead. ๐Ÿ’–
  • --strict โ€” enable strict mode. important caveat: placeholder cannot be used in strict mode. so fr fr, no placeholders. ๐Ÿšซ
  • --skip-zero โ€” skip the check of file descriptor 0. just skipping it. no thoughts. ๐ŸŒธ
  • --skip-atexit โ€” skip atexit hooks (this is ignored by the master). the master is unbothered. ๐Ÿ’…
  • --skip-atexit-teardown โ€” skip atexit teardown (also ignored by the master). she's consistent about not listening to the master on this. ๐Ÿ˜Œ
  • -S, --set โ€” set a placeholder or an option. versatile much? โœจ
  • --set-placeholder โ€” set a placeholder. specific mode unlocked. ๐ŸŽฏ
  • --set-ph โ€” set a placeholder. yes this is the same as above, she has nicknames, let her live. ๐Ÿฆ‹
  • --get โ€” print the specified option value and exit. short and to the point, we love a clean exit. ๐Ÿšช
  • --declare-option โ€” declare a new uWSGI custom option. you can make your own options now. main character move tbh. ๐Ÿ‘‘
  • --declare-option2 โ€” declare a new uWSGI custom option, but non-immediate. the chill delayed version. ๐Ÿ’ค
  • --resolve โ€” place the result of a dns query in the specified placeholder. syntax is: placeholder=name โ€” and btw it's an immediate option. (the original manual typo'd it as "sytax", i'm just fixing the spelling for readability, the meaning is identical ๐Ÿซถ)
  • --for โ€” (opt logic) for cycle. logic time bestie. ๐Ÿ”„
  • --for-glob โ€” (opt logic) for cycle, but expand the glob. patterns get matched, magic happens. โœจ
  • --for-times โ€” (opt logic) for cycle, expanding the specified num to a list starting from 1. so if you say 5, you get 1 2 3 4 5. ๐Ÿ’…
  • --for-readline โ€” (opt logic) for cycle, expanding the specified file to a list of lines. ๐Ÿ“„
  • --endfor โ€” (opt logic) end for cycle. closing the loop, respectfully. ๐ŸŽ€
  • --end-for โ€” (opt logic) end for cycle. same energy, different spelling. ๐ŸŒˆ
  • --if-opt โ€” (opt logic) check for option. conditional queen. ๐Ÿ‘€
  • --if-not-opt โ€” (opt logic) check for option (the inverse vibe). ๐Ÿ™ƒ
  • --if-env โ€” (opt logic) check for an environment variable. ๐ŸŒฑ
  • --if-not-env โ€” (opt logic) check for environment variable (not-version). โœจ
  • --ifenv โ€” (opt logic) check for environment variable. third name for the same thing, she's just like that. ๐Ÿ’…
  • --if-reload โ€” (opt logic) check for reload. did she just reload? check it. ๐Ÿ”
  • --if-not-reload โ€” (opt logic) check for reload (the not-version). ๐Ÿ”„
  • --if-hostname โ€” (opt logic) check for hostname. who are you, machine? ๐Ÿ 
  • --if-not-hostname โ€” (opt logic) check for hostname (not-version). ๐Ÿšซ
  • --if-hostname-match โ€” (opt logic) try to match hostname against a regular expression. regex girlies rise up. ๐Ÿงš
  • --if-not-hostname-match โ€” (opt logic) try to match hostname against a regular expression (not-version). ๐Ÿชž
  • --if-exists โ€” (opt logic) check for file/directory existence. does it exist? check. ๐Ÿ“‚
  • --if-not-exists โ€” (opt logic) check for file/directory existence (not-version). ๐Ÿ‘ป
  • --ifexists โ€” (opt logic) check for file/directory existence. yes, another nickname, keep up. ๐Ÿ’–
  • --if-plugin โ€” (opt logic) check for plugin. does the plugin exist? ๐Ÿ”Œ
  • --if-not-plugin โ€” (opt logic) check for plugin (not-version). ๐Ÿšซ
  • --ifplugin โ€” (opt logic) check for plugin. the third twin. ๐Ÿ’…
  • --if-file โ€” (opt logic) check for file existence specifically. ๐Ÿ“„
  • --if-not-file โ€” (opt logic) check for file existence (not-version). ๐ŸŒธ
  • --if-dir โ€” (opt logic) check for directory existence specifically. ๐Ÿ“
  • --if-not-dir โ€” (opt logic) check for directory existence (not-version). ๐Ÿฆ‹
  • --ifdir โ€” (opt logic) check for directory existence. yes, again, a nickname. she has SO many. ๐Ÿ˜ญ
  • --if-directory โ€” (opt logic) check for directory existence. fourth one for this exact check, bestie, i'm not joking. ๐Ÿ’–
  • --endif โ€” (opt logic) end if. close the conditional. ๐Ÿ”’
  • --end-if โ€” (opt logic) end if. twin. โœจ
  • --blacklist โ€” set options blacklist context. spicy permissions move. ๐Ÿ–ค
  • --end-blacklist โ€” clear options blacklist context. undo. ๐Ÿงน
  • --whitelist โ€” set options whitelist context. the opposite vibe, but equally valid. ๐Ÿค
  • --end-whitelist โ€” clear options whitelist context. undo again. ๐Ÿงผ
  • --ignore-sigpipe โ€” do not report the (annoying) SIGPIPE. silence is golden fr fr. ๐Ÿคซ
  • --ignore-write-errors โ€” do not report the (also annoying) write()/writev() errors. peace and quiet. ๐Ÿ•Š๏ธ
  • --write-errors-tolerance โ€” set the maximum number of allowed write errors. default is no tolerance. so by default, she does NOT play. important caveat!! โš ๏ธ
  • --write-errors-exception-only โ€” only raise an exception on write errors, giving control to the app itself. let the app handle its own drama. ๐ŸŽญ
  • --disable-write-exception โ€” disable exception generation on write()/writev(). no exceptions, periodt. ๐Ÿšซ
  • --inherit โ€” use the specified file as a 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). ๐ŸŽ€
  • -d, --daemonize โ€” daemonize uWSGI. she becomes one with the background. ๐ŸŒ™
  • --daemonize2 โ€” daemonize uWSGI after app loading. fashionably late to the background. โฐ
  • --stop โ€” stop an instance. bye bestie ๐Ÿ‘‹
  • --reload โ€” reload an instance. refresh her. ๐Ÿ”„
  • --pause โ€” pause an instance. hold that thought. โœ‹
  • --suspend โ€” suspend an instance. deeper pause energy. ๐Ÿ’ค
  • --resume โ€” resume an instance. she's back and better. ๐ŸŒŸ
  • --connect-and-read โ€” connect to a socket and wait for data from it. patient queen. โณ
  • --extract โ€” fetch/dump any supported address to stdout. dump it, bestie. ๐Ÿ“ค
  • -l, --listen โ€” set the socket listen queue size. how many can wait in line. ๐Ÿšฆ
  • -v, --max-vars โ€” set the amount of internal iovec/vars structures. variable vibes only. ๐ŸŽ›๏ธ
  • --max-apps โ€” set the maximum number of per-worker applications. how many apps per worker. ๐Ÿ’…
  • -b, --buffer-size โ€” set internal buffer size. size matters here. ๐Ÿ“
  • -m, --memory-report โ€” enable memory report. receipts for your RAM. ๐Ÿงพ
  • --profiler โ€” enable the specified profiler. performance girlies, get in. ๐Ÿ“Š
  • -c, --cgi-mode โ€” force CGI-mode for plugins supporting it. retro but make it cute. ๐Ÿ“ผ
  • -a, --abstract-socket โ€” force UNIX socket in abstract mode (Linux only). linux besties only on this one. ๐Ÿง
  • -C, --chmod-socket โ€” chmod-socket. set those perms. ๐Ÿ”‘
  • -C, --chmod โ€” chmod-socket. same thing, shorter name. ๐Ÿ’…
  • --chown-socket โ€” chown unix sockets. change the owner, change the vibe. ๐Ÿ‘ค
  • --umask โ€” set umask. classic unix move. ๐ŸŽญ
  • --freebind โ€” put socket in freebind mode. she roams free. ๐Ÿฆ‹
  • --map-socket โ€” map sockets to specific workers. assignments, bestie. ๐Ÿ—บ๏ธ
  • -T, --enable-threads โ€” enable threads. stub option btw: this is true by default. so it's already true, she's just giving you the option to say it out loud. ๐Ÿงต
  • --no-threads-wait โ€” do not wait for threads cancellation on quit/reload. she's not waiting. ๐Ÿšช
  • --auto-procname โ€” automatically set process names to something meaningful. she names herself. ๐Ÿ‘‘
  • --procname-prefix โ€” add a prefix to the process names. ๐Ÿ“›
  • --procname-prefix-spaced โ€” add a spaced prefix to the process names. the space is the moment. โœจ
  • --procname-append โ€” append a string to process names. ๐ŸŽ€
  • --procname โ€” set process names. the whole thing. ๐Ÿ’–
  • --procname-master โ€” set master process name. master gets her own name. ๐Ÿ‘ธ
  • -i, --single-interpreter โ€” do not use multiple interpreters (where available). one interpreter, one vibe. ๐ŸŽฏ
  • --need-app โ€” exit if no app can be loaded. she needs the app fr fr. no app, no service. ๐Ÿšช
  • -M, --master โ€” enable master process. the boss is here. ๐Ÿ‘‘
  • --honour-stdin โ€” do not remap stdin to /dev/null. respect the stdin. ๐ŸŽค
  • --emperor โ€” run the Emperor. yes, she's royalty. she runs everything. ๐Ÿ‘‘โœจ
  • --emperor-proxy-socket โ€” force the vassal to become an Emperor proxy. vassals with main character energy. ๐ŸŽญ
  • --emperor-wrapper โ€” set a binary wrapper for vassals. wrapping them up nice. ๐ŸŽ
  • --emperor-wrapper-override โ€” set a binary wrapper for vassals to try before the default one. priority wrapper. ๐Ÿฅ‡
  • --emperor-wrapper-fallback โ€” set a binary wrapper for vassals to try as a last resort. backup wrapper, just in case. ๐Ÿ›Ÿ
  • --emperor-nofollow โ€” do not follow symlinks when checking for mtime. symlinks stay unbothered. ๐Ÿ”—
  • --emperor-procname โ€” set the Emperor process name. name the royalty. ๐Ÿ‘‘
  • --emperor-freq โ€” set the Emperor scan frequency. default is 3 seconds. so she scans every 3 seconds, no cap. โฑ๏ธ
  • --emperor-required-heartbeat โ€” set the Emperor tolerance about heartbeats. how forgiving she is about heartbeats. ๐Ÿ’“
  • --emperor-curse-tolerance โ€” set the Emperor tolerance about cursed vassals. how much cursed behaviour she tolerates. ๐Ÿง™

okay that's the end of part 1 bestie, more is coming ๐Ÿซถโœจ

  • --emperor-pidfile โ€” drops the Emperor's pid into the file you name, so you can find your ruler later ๐Ÿ’–
  • --emperor-tyrant โ€” flips the Emperor into Tyrant mode ๐Ÿซ… no cap, it does not play
  • --emperor-tyrant-nofollow โ€” in Tyrant mode, don't follow symlinks when it's checking uid/gid. no sneaky shortcuts, bestie ๐Ÿšซ๐Ÿ”—
  • --emperor-stats โ€” spins up the Emperor stats server โœจ
  • --emperor-stats-server โ€” same vibe, spins up the Emperor stats server โœจ
  • --early-emperor โ€” spawns the emperor ASAP, like, the second it can ๐Ÿ˜ค
  • --emperor-broodlord โ€” runs the emperor in BroodLord mode ๐Ÿ‘‘
  • --emperor-throttle โ€” sets the throttling level (in milliseconds) for vassals that are acting up (default 1000) ๐Ÿซ 
  • --emperor-max-throttle โ€” sets the max throttling level (in milliseconds) for bad-behaving vassals (default 3 minutes) ๐Ÿ˜ญ
  • --emperor-magic-exec โ€” prefixes vassals' config files with exec:// if they've got the executable bit set ๐Ÿช„
  • --emperor-on-demand-extension โ€” searches for a text file (vassal name + extension) that holds the on demand socket name ๐Ÿ”
  • --emperor-on-demand-ext โ€” literally the same thing, searches for that text file (vassal name + extension) with the on demand socket name ๐Ÿ”
  • --emperor-on-demand-directory โ€” turns on on demand mode, binding to the unix socket in the directory you give, named like the vassal + .socket ๐Ÿ”Œ
  • --emperor-on-demand-dir โ€” same energy: on demand mode, unix socket in your directory, named like the vassal + .socket ๐Ÿ”Œ
  • --emperor-on-demand-exec โ€” uses the output of the command you specify as the on demand socket name (the vassal name gets passed as the only argument) ๐ŸŽฏ
  • --emperor-extra-extension โ€” lets the Emperor accept that extension (the vassal gets called with --config) ๐Ÿงš
  • --emperor-extra-ext โ€” again, allows that extension in the Emperor (vassal called with --config) ๐Ÿงš
  • --emperor-no-blacklist โ€” disables the Emperor blacklisting subsystem ๐Ÿ’€
  • --emperor-use-clone โ€” uses clone() instead of fork(), passing the unshare() flags you specify ๐Ÿงฌ
  • --emperor-graceful-shutdown โ€” uses vassals graceful shutdown during ragnarok ๐ŸŒ… yes, ragnarok, that's the word
  • --emperor-cap โ€” sets vassals' capability ๐ŸŽฉ
  • --vassals-cap โ€” sets vassals' capability ๐ŸŽฉ
  • --vassal-cap โ€” sets vassals' capability ๐ŸŽฉ
  • --imperial-monitor-list โ€” lists the enabled imperial monitors ๐Ÿ“‹
  • --imperial-monitors-list โ€” lists the enabled imperial monitors ๐Ÿ“‹
  • --vassals-inherit โ€” adds config templates to vassals' config (it uses --inherit) ๐Ÿซถ
  • --vassals-include โ€” includes config templates in vassals' config (uses --include instead of --inherit) ๐Ÿซถ
  • --vassals-inherit-before โ€” adds config templates to vassals' config (uses --inherit, and parses before the vassal file) โฎ๏ธ
  • --vassals-include-before โ€” includes config templates in vassals' config (uses --include instead of --inherit, and parses before the vassal file) โฎ๏ธ
  • --vassals-start-hook โ€” runs the command you give before each and every vassal starts ๐Ÿ
  • --vassals-stop-hook โ€” runs the command you give after a vassal's death โšฐ๏ธ
  • --vassal-sos โ€” the vassal asks the emperor for reinforcement when it's overloaded ๐Ÿ†˜
  • --vassal-sos-backlog โ€” the vassal fires off an sos if the backlog queue has more items than the value you set ๐Ÿ“ˆ
  • --vassals-set โ€” automatically sets the option you name (via --set) for every vassal โš™๏ธ
  • --vassal-set โ€” automatically sets that option (via --set) for every vassal โš™๏ธ
  • --heartbeat โ€” announces healthiness to the emperor ๐Ÿ’“
  • --reload-mercy โ€” sets the max time (in seconds) we wait for workers and other processes to die during reload/shutdown โณ
  • --worker-reload-mercy โ€” sets the max time (in seconds) a worker gets to reload/shutdown (default is 60) โณ
  • --mule-reload-mercy โ€” sets the max time (in seconds) a mule gets to reload/shutdown (default is 60) โณ
  • --exit-on-reload โ€” forces an exit even if a reload was requested ๐Ÿšช
  • --die-on-term โ€” exits instead of doing a brutal reload on SIGTERM ๐Ÿ’€
  • --force-gateway โ€” forces the spawn of the first registered gateway with no master ๐Ÿ’ฅ
  • -h|--help โ€” shows this help ๐Ÿ™‹
  • -h|--usage โ€” shows this help ๐Ÿ™‹
  • --print-sym โ€” prints the content of the binary symbol you specify ๐Ÿ”Ž
  • --print-symbol โ€” prints the content of that binary symbol ๐Ÿ”Ž
  • -r|--reaper โ€” calls waitpid(-1,...) after each request to get rid of zombies ๐ŸงŸ no zombie apocalypse, not today
  • -R|--max-requests โ€” reloads workers after the specified amount of managed requests ๐Ÿ”„
  • --max-requests-delta โ€” adds (worker_id * delta) to the max_requests value of each worker โž•
  • --min-worker-lifetime โ€” the number of seconds a worker has to run before it can be reloaded (default is 10) โฑ๏ธ
  • --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 the internal sockets timeout ๐ŸŒ
  • --no-fd-passing โ€” disables file descriptor passing ๐Ÿšซ
  • --locks โ€” creates the number of shared locks you specify ๐Ÿ”’
  • --lock-engine โ€” sets the lock engine ๐Ÿ”ง
  • --ftok โ€” sets the ipcsem key via ftok() so you avoid duplicates ๐Ÿ—๏ธ
  • --persistent-ipcsem โ€” does not remove ipcsem's on shutdown ๐Ÿซฅ they stay
  • -A|--sharedarea โ€” creates a raw shared memory area of the number of pages you give (heads up: it supports keyval too) ๐Ÿง 
  • --safe-fd โ€” does not close the file descriptor you specify ๐Ÿ›Ÿ
  • --fd-safe โ€” does not close that file descriptor ๐Ÿ›Ÿ
  • --cache โ€” creates a shared cache holding the given elements ๐Ÿฐ
  • --cache-blocksize โ€” sets the cache blocksize ๐Ÿงฑ
  • --cache-store โ€” enables persistent cache to disk ๐Ÿ’พ
  • --cache-store-sync โ€” sets the frequency of sync for the persistent cache ๐Ÿ”
  • --cache-no-expire โ€” disables the auto sweep of expired items ๐Ÿงน๐Ÿšซ
  • --cache-expire-freq โ€” sets how often the cache sweeper scans (default 3 seconds) ๐Ÿงฝ
  • --cache-report-freed-items โ€” constantly reports the cache item freed by the sweeper (use only for debug, bestie) ๐Ÿ›
  • --cache-udp-server โ€” binds the cache udp server (used only for set/update/delete) to the socket you specify ๐Ÿ“ก
  • --cache-udp-node โ€” sends cache update/deletion to the cache udp server you specify ๐Ÿ“ค
  • --cache-sync โ€” copies the whole content of another uWSGI cache server on server startup ๐Ÿ“ฅ
  • --cache-use-last-modified โ€” updates the 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 into the cache ๐Ÿ“‚
  • --load-file-in-cache-gzip โ€” loads a static file into the cache with gzip compression ๐Ÿ—œ๏ธ
  • --cache2 โ€” creates a new generation shared cache (keyval syntax) ๐ŸŒฑ
  • --queue โ€” enables the shared queue ๐Ÿšถโ€โ™€๏ธ๐Ÿšถโ€โ™€๏ธ๐Ÿšถโ€โ™€๏ธ
  • --queue-blocksize โ€” sets the queue blocksize ๐Ÿงฑ
  • --queue-store โ€” enables persistent queue to disk ๐Ÿ’พ
  • --queue-store-sync โ€” sets the frequency of sync for the persistent queue ๐Ÿ”
  • -Q|--spooler โ€” runs a spooler on the directory you specify ๐Ÿ—‚๏ธ
  • --spooler-external โ€” maps spooler requests to a spooler directory managed by an external instance ๐Ÿ”—
  • --spooler-ordered โ€” tries to order the execution of spooler tasks ๐Ÿ”ข
  • --spooler-chdir โ€” does a chdir() to the specified directory before each spooler task ๐Ÿšช
  • --spooler-processes โ€” sets the number of processes for spoolers ๐Ÿ‘ฏ
  • --spooler-quiet โ€” don't be verbose with spooler tasks ๐Ÿคซ
  • --spooler-max-tasks โ€” sets the max number of tasks to run before a spooler gets recycled โ™ป๏ธ
  • --spooler-harakiri โ€” sets the harakiri timeout for spooler tasks ๐Ÿ—ก๏ธ
  • --spooler-frequency โ€” sets the spooler frequency โฒ๏ธ
  • --spooler-freq โ€” sets the spooler frequency โฒ๏ธ
  • --mule โ€” adds a mule ๐Ÿด
  • --mules โ€” adds the number of mules you specify ๐Ÿด๐Ÿด๐Ÿด
  • --farm โ€” adds a mule farm ๐Ÿšœ
  • --mule-msg-size โ€” sets the mule message buffer size ๐Ÿ“ฆ
  • --signal โ€” sends a uwsgi signal to a server ๐Ÿ“ถ
  • --signal-bufsize โ€” sets the buffer size for the signal queue ๐Ÿ“
  • --signals-bufsize โ€” sets the buffer size for the 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 โ€” the maximum number of rpc slots (default: 64) ๐ŸŽฐ
  • -L|--disable-logging โ€” disables request logging ๐Ÿ”‡
  • --flock โ€” locks the specified file before starting, and exits if it's locked ๐Ÿ”
  • --flock-wait โ€” locks the specified file before starting, and waits if it's locked โธ๏ธ
  • --flock2 โ€” locks the specified file after logging/daemon setup, exits if it's locked ๐Ÿ”
  • --flock-wait2 โ€” locks the specified file after logging/daemon setup, waits if it's locked โธ๏ธ
  • --pidfile โ€” creates a pidfile (before privileges drop) ๐Ÿ“
  • --pidfile2 โ€” creates a pidfile (after privileges drop) ๐Ÿ“
  • --safe-pidfile โ€” creates a safe pidfile (before privileges drop) ๐Ÿ›Ÿ
  • --safe-pidfile2 โ€” creates a safe pidfile (after privileges drop) ๐Ÿ›Ÿ
  • --chroot โ€” does a chroot() to the directory you specify ๐Ÿ“ฆ
  • --pivot-root โ€” does a pivot_root() to the directories you specify (new_root and put_old must be separated with a space) ๐Ÿ”„
  • --pivot_root โ€” does a pivot_root() to those directories (new_root and put_old separated with a space) ๐Ÿ”„
  • --uid โ€” does a setuid to the user/uid you specify ๐Ÿ‘ค
  • --gid โ€” does a setgid to the group/gid you specify ๐Ÿ‘ฅ
  • --add-gid โ€” adds the group id you specify to the process credentials โž•
  • --immediate-uid โ€” setuid to the user/uid you specify, but IMMEDIATELY โšก
  • --immediate-gid โ€” setgid to the group/gid you specify, IMMEDIATELY โšก
  • --no-initgroups โ€” disables the additional groups that get set via initgroups() ๐Ÿšซ
  • --cap โ€” sets the process capability ๐ŸŽฉ
  • --unshare โ€” unshare()s part of the processes and drops them in a new namespace ๐Ÿช
  • --unshare2 โ€” same thing, unshare()s part of the processes into a new namespace โ€” but after the rootfs change ๐Ÿช
  • --setns-socket โ€” exposes a unix socket that returns namespace fds from /proc/self/ns ๐Ÿ”Œ
  • --setns-socket-skip โ€” skips the entry you specify when sending setns file descriptors โญ๏ธ
  • --setns-skip โ€” skips that 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 the fds โšก
  • --jailed โ€” marks this instance as jailed, which forces the post_jail hooks to actually run. it's giving "yes i am in the box, treat me like it" ๐Ÿ’…
  • --refork โ€” does a fork() again after the privileges drop. super handy for jailing systems โœจ
  • --re-fork โ€” literally the same thing as --refork, just spelled the other way. fork() again after privileges drop, jailing systems, you know the drill ๐Ÿฆ‹
  • --refork-as-root โ€” fork() again, but before the privileges drop this time. again, for jailing systems ๐Ÿ’–
  • --re-fork-as-root โ€” the hyphenated twin of --refork-as-root. fork() again before privileges drop, useful for jailing systems ๐ŸŒธ
  • --refork-post-jail โ€” fork() again after jailing. jailing systems again bestie, we love them ๐Ÿ’…
  • --re-fork-post-jail โ€” yep, same as --refork-post-jail, extra hyphen edition. fork() again after jailing, useful for jailing systems ๐ŸŽ€

  • --hook-asap โ€” runs the specified hook as soon as possible โšก
  • --hook-pre-jail โ€” runs the specified hook before jailing
  • --hook-post-jail โ€” runs the specified hook after jailing
  • --hook-in-jail โ€” runs the specified hook in jail after initialization ๐Ÿ”’
  • --hook-as-root โ€” runs the specified hook before the privileges drop ๐Ÿ‘‘
  • --hook-as-user โ€” runs the specified hook after the privileges drop ๐Ÿ™‹
  • --hook-as-user-atexit โ€” runs the specified hook before app exit and reload ๐Ÿ˜ญ
  • --hook-pre-app โ€” runs the specified hook before app loading
  • --hook-post-app โ€” runs the specified hook after app loading
  • --hook-post-fork โ€” runs the specified hook after each fork ๐Ÿด
  • --hook-accepting โ€” runs the specified hook after each worker enters the accepting phase ๐Ÿ’–
  • --hook-accepting1 โ€” runs the specified hook after the first worker enters the accepting phase ๐Ÿฅ‡
  • --hook-accepting-once โ€” runs the specified hook after each worker enters the accepting phase, but only once per-instance โœจ
  • --hook-accepting1-once โ€” runs the specified hook after the first worker enters the accepting phase, and only once per instance ๐Ÿ’…
  • --hook-master-start โ€” runs the specified hook when the Master starts ๐Ÿ‘‘
  • --hook-touch โ€” runs the specified hook when the specified file is touched. syntax is <file> <action> ๐Ÿซฐ
  • --hook-emperor-start โ€” runs the specified hook when the Emperor starts ๐Ÿ‘‘
  • --hook-emperor-stop โ€” runs the specified hook when the Emperor sends a stop message ๐Ÿ›‘
  • --hook-emperor-reload โ€” runs the specified hook when the Emperor sends a reload message ๐Ÿ”„
  • --hook-emperor-lost โ€” runs the specified hook when the Emperor connection is lost ๐Ÿ’€
  • --hook-as-vassal โ€” runs the specified hook before exec()ing the vassal
  • --hook-as-emperor โ€” runs the specified hook in the emperor after the vassal has been started
  • --hook-as-mule โ€” runs the specified hook in each mule ๐Ÿด
  • --hook-as-gateway โ€” runs the specified hook in each gateway ๐ŸŒˆ

  • --after-request-hook โ€” runs the specified function/symbol after each request ๐Ÿ’ซ
  • --after-request-call โ€” runs the specified function/symbol after each request (same energy fr fr)

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

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

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

  • --wait-for-interface โ€” waits for the specified network interface to come up before running root hooks ๐Ÿ“ก
  • --wait-for-interface-timeout โ€” sets the timeout for wait-for-interface โฑ๏ธ
  • --wait-interface โ€” waits for the specified network interface to come up before running root hooks (same thing, shorter name)
  • --wait-interface-timeout โ€” sets the timeout for wait-for-interface โฑ๏ธ
  • --wait-for-iface โ€” waits for the specified network interface to come up before running root hooks ๐Ÿ‘€
  • --wait-for-iface-timeout โ€” sets the timeout for wait-for-interface โฑ๏ธ
  • --wait-iface โ€” waits for the specified network interface to come up before running root hooks โœจ
  • --wait-iface-timeout โ€” sets the timeout for wait-for-interface โฑ๏ธ
  • --wait-for-fs โ€” waits for the specified filesystem item to appear before running root hooks ๐Ÿ“
  • --wait-for-file โ€” waits for the specified file to appear before running root hooks ๐Ÿ“„
  • --wait-for-dir โ€” waits for the specified directory to appear before running root hooks ๐Ÿ“‚
  • --wait-for-mountpoint โ€” waits for the specified mountpoint to appear before running root hooks ๐Ÿ’ฝ
  • --wait-for-fs-timeout โ€” sets the timeout for wait-for-fs/file/dir โฑ๏ธ
  • --wait-for-socket โ€” waits for the specified socket to be ready before loading apps ๐Ÿ”Œ
  • --wait-for-socket-timeout โ€” sets the timeout for wait-for-socket โฑ๏ธ

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

  • --ini โ€” load config from an ini file ๐Ÿ“œ
  • -y, --yaml โ€” load config from a yaml file ๐ŸŒธ
  • -y, --yml โ€” load config from a yaml file (same short flag, same vibe)
  • -j, --json โ€” load config from a json file ๐Ÿงพ
  • -j, --js โ€” load config from a json file (again, -j does both)

  • --weight โ€” the weight of the instance. it's used by clustering/lb/subscriptions โš–๏ธ
  • --auto-weight โ€” sets the weight of the instance automatically, also used by clustering/lb/subscriptions โœจ
  • --no-server โ€” forces no-server mode ๐Ÿšซ
  • --command-mode โ€” forces command mode โŒจ๏ธ
  • --no-defer-accept โ€” disables deferred-accept on sockets ๐Ÿ™…
  • --tcp-nodelay โ€” enables TCP NODELAY on each request โšก
  • --so-keepalive โ€” enables TCP KEEPALIVEs ๐Ÿ’ž
  • --so-send-timeout โ€” sets SO_SNDTIMEO โฑ๏ธ
  • --socket-send-timeout โ€” sets SO_SNDTIMEO (yes, same one)
  • --so-write-timeout โ€” sets SO_SNDTIMEO (yep, still SO_SNDTIMEO)
  • --socket-write-timeout โ€” sets SO_SNDTIMEO (they're all the same bestie, pick your fav name)
  • --socket-sndbuf โ€” sets SO_SNDBUF ๐Ÿ“ค
  • --socket-rcvbuf โ€” sets SO_RCVBUF ๐Ÿ“ฅ
  • --shutdown-sockets โ€” forces calling shutdown() in addition to close() when sockets are destroyed ๐Ÿ›‘
  • --limit-as โ€” limits the processes' address space/vsz ๐Ÿงฑ
  • --limit-nproc โ€” limits the number of spawnable processes ๐Ÿšง
  • --reload-on-as โ€” reloads if address space goes higher than the specified megabytes ๐Ÿ”„
  • --reload-on-rss โ€” reloads if rss memory goes higher than the specified megabytes ๐Ÿ”„
  • --evil-reload-on-as โ€” forces the master to reload a worker if its address space is higher than the specified megabytes ๐Ÿ˜ˆ
  • --evil-reload-on-rss โ€” forces the master to reload a worker if its rss memory is higher than the specified megabytes ๐Ÿ˜ˆ
  • --mem-collector-freq โ€” sets the memory collector frequency when evil reloads are in place ๐Ÿงน
  • --reload-on-fd โ€” reloads if the specified file descriptor is ready ๐Ÿ“ฌ
  • --brutal-reload-on-fd โ€” brutal reload if the specified file descriptor is ready ๐Ÿ’€
  • --ksm โ€” enables Linux KSM ๐Ÿง
  • --pcre-jit โ€” enables pcre jit (if available) โšก
  • --never-swap โ€” locks all memory pages, avoiding swapping ๐Ÿ”’
  • --touch-reload โ€” reloads uWSGI if the specified file is modified/touched ๐Ÿ‘†
  • --touch-workers-reload โ€” triggers a reload of (only) workers if the specified file is modified/touched ๐Ÿ› ๏ธ
  • --touch-mules-reload โ€” reloads mules if the specified file is modified/touched ๐Ÿด
  • --touch-spoolers-reload โ€” reloads spoolers if the specified file is modified/touched ๐Ÿงต
  • --touch-chain-reload โ€” triggers a chain reload if the specified file is modified/touched โ›“๏ธ
  • --touch-logrotate โ€” triggers logrotation if the specified file is modified/touched ๐Ÿ“ฆ
  • --touch-logreopen โ€” triggers log reopen if the specified file is modified/touched ๐Ÿ”
  • --touch-exec โ€” runs a command when the specified file is modified/touched. syntax is file command ๐Ÿ’ป

okay bestie, this next chunk is LONG but it's lowkey the fun stuff โœจ filesystem watchers, metrics, stats, legions, subscriptions, ssl, loggersโ€ฆ we got it ALL. hydrate, stretch, let's GO ๐Ÿ’…


๐Ÿฆ‹ bestie, let's watch some files (and mountpoints, and touches)

  • --touch-signal โ€” pings a signal when the file you point at gets modified/touched. Syntax is literally: file signal
  • --fs-reload โ€” graceful reload the moment the filesystem object you named gets modified ๐ŸŽ€
  • --fs-brutal-reload โ€” same vibe but BRUTAL. no gentle goodbye, just reload when the filesystem object changes ๐Ÿ’€
  • --fs-signal โ€” raise a uwsgi signal when the filesystem object you specified gets modified. Syntax: file signal
  • --check-mountpoint โ€” nukes the instance if a filesystem stops being reachable (super useful for reliable Fuse management, iykyk)
  • --mountpoint-check โ€” destroys the instance if a filesystem is no longer reachable (yes bestie, same thing, reliable Fuse management โœจ)
  • --check-mount โ€” destroys the instance if a filesystem is no more reachable (reliable Fuse management energy)
  • --mount-check โ€” destroys the instance if a filesystem is no more reachable (reliable Fuse management, again ๐Ÿซถ)
  • --propagate-touch โ€” an over-engineering option for systems with flaky signal management. yes that's literally what it says ๐Ÿ™ˆ

๐Ÿ“ request bodies, orphans & process vibes

  • --limit-post โ€” caps the request body. limit her, periodt.
  • --no-orphans โ€” automatically kills workers if the master dies. can be dangerous for availability, so be careful bestie โš ๏ธ
  • --prio โ€” set processes/threads priority
  • --cpu-affinity โ€” set cpu affinity (pin those threads where you want 'em ๐Ÿ’…)
  • --post-buffering โ€” set the size in bytes after which it buffers to disk instead of memory
  • --post-buffering-bufsize โ€” set the buffer size for read() when you're in post buffering mode
  • --body-read-warning โ€” sets how many megabytes of memory allocation are allowed for a request body before it starts printing a warning. a lil heads up before things get spicy ๐Ÿ”ฅ
  • --upload-progress โ€” enables creation of .json files in the directory you specify, while a file upload is happening ๐Ÿ“‚

๐ŸŒธ app mounting & script name shenanigans

  • --no-default-app โ€” do not fallback to the default app
  • --manage-script-name โ€” automatically rewrites SCRIPT_NAME and PATH_INFO
  • --ignore-script-name โ€” ignore SCRIPT_NAME entirely, no thoughts head empty ๐Ÿ’ญ
  • --catch-exceptions โ€” reports the exception as http output. discouraged!! use only for testing ๐Ÿ™ˆ
  • --reload-on-exception โ€” reloads a worker whenever an exception is raised
  • --reload-on-exception-type โ€” reloads a worker when a specific exception type is raised
  • --reload-on-exception-value โ€” reloads a worker when a specific exception value is raised
  • --reload-on-exception-repr โ€” reloads a worker when a specific exception type+value (language-specific, okurr) is raised
  • --exception-handler โ€” add an exception handler

๐Ÿ‘‘ metrics, stats & alarms (the monitoring girlies)

  • --enable-metrics โ€” turn the whole metrics subsystem ON
  • --metric โ€” add a custom metric
  • --metric-threshold โ€” add a metric threshold/alarm
  • --metric-alarm โ€” add a metric threshold/alarm
  • --alarm-metric โ€” add a metric threshold/alarm
  • --metrics-dir โ€” export metrics as text files into the directory you name
  • --metrics-dir-restore โ€” restore the last value taken from the metrics dir
  • --metric-dir โ€” export metrics as text files to the specified directory
  • --metric-dir-restore โ€” restore last value taken from the metrics dir
  • --metrics-no-cores โ€” disable generation of cores-related metrics
  • --udp โ€” run the udp server on the address you specify ๐Ÿ“ก
  • --stats โ€” enable the stats server on the specified address
  • --stats-server โ€” enable the stats server on the specified address (same queen, different name ๐Ÿ‘‘)
  • --stats-http โ€” prefix stats server json output with http headers
  • --stats-minified โ€” minify the statistics json output
  • --stats-min โ€” minify statistics json output
  • --stats-push โ€” push the stats json to the destination you specify
  • --stats-pusher-default-freq โ€” set the default frequency of stats pushers
  • --stats-pushers-default-freq โ€” set the default frequency of stats pushers
  • --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

๐Ÿงš the legion section (yes it's really called a legion, iconic)

  • --legion โ€” become a member of a legion
  • --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 โ€” declares itself as a dead node for the number of seconds you specify if one of the lord hooks fails ๐Ÿ’€
  • --legion-skew-tolerance โ€” set the clock skew tolerance of the legion subsystem (default 60 seconds)
  • --legion-lord โ€” the action to call on Lord election
  • --legion-unlord โ€” the action to call on Lord dismiss
  • --legion-setup โ€” the action to call on legion setup
  • --legion-death โ€” the action to call on legion death (shutdown of the instance)
  • --legion-join โ€” the action to call on legion join (first time quorum is reached)
  • --legion-node-joined โ€” the action to call on a new node joining the legion
  • --legion-node-left โ€” the 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, security & signing

  • --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 uid you specify, 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
  • --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 interval you set
  • --subscription-tolerance โ€” set the tolerance for subscription servers
  • --unsubscribe-on-graceful-reload โ€” force the unsubscribe request even during a 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 & ssl (handle with care bestie)

  • --snmp โ€” enable the embedded snmp server
  • --snmp-community โ€” set the snmp community string
  • --ssl-verbose โ€” be verbose about SSL errors
  • --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 directory you specify and create an sni/ssl context on demand
  • --sni-dir-ciphers โ€” set the ssl ciphers for the 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 directory you specify

โญ master checks, binaries & async

  • --check-interval โ€” set the interval (in seconds) of master checks
  • --forkbomb-delay โ€” sleep for the number of seconds you specify when a forkbomb is detected ๐Ÿ’ฃ
  • --binary-path โ€” force the 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 number of cores you specify
  • --max-fd โ€” set the maximum number of file descriptors (requires root privileges)

๐ŸŽ€ logging (she's a talker and we love her)

  • --logto โ€” set the 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 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 (a.k.a. do not show) log lines matching the regexp you give
  • --log-filter โ€” show ONLY log lines matching the specified regexp
  • --log-route โ€” log to the named logger you specify if the regexp applied on the logline matches
  • --log-req-route โ€” log requests to the named logger you specify if the regexp applied on the logline matches

๐Ÿ’… last lil bits of this part

  • --use-abort โ€” call abort() on segfault/fpe, could be useful for generating a core dump
  • --alarm โ€” create a new alarm, syntax: <alarm> <plugin:args>

okay that was a LOT but you ate that, bestie ๐Ÿ’– more coming, don't go anywhere ๐Ÿซถ

okay bestie we're deep in the option swamp now and it is โœจgivingโœจ โ€” alarms, logging, routes, the whole little ecosystem. buckle up ๐ŸŽ€


<h2>๐Ÿšจ the alarm era ๐Ÿšจ</h2>

  • --alarm-cheap โ€” don't spin up a whole dedicated thread squad for your curl-based alarms, just reuse the main alarm thread. lowkey efficient ๐Ÿ’…
  • --alarm-freq โ€” tunes the anti-loop alarm system. default is 3 seconds.
  • --alarm-fd โ€” fires off the alarm you name whenever an fd gets read. by default it reads 1 byte, but set it to 8 if you're dealing with eventfd.
  • --alarm-segfault โ€” raise the specified alarm when the segmentation fault handler runs. ๐Ÿ˜ญ (yes, that handler)
  • --segfault-alarm โ€” same exact vibe as --alarm-segfault: raise the specified alarm when the segmentation fault handler is executed.
  • --alarm-backlog โ€” raise the specified alarm when the socket backlog queue is full. she's at capacity bestie ๐Ÿซฃ
  • --backlog-alarm โ€” raise the specified alarm when the socket backlog queue is full.
  • --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. (six names for one behaviour? iconic, honestly ๐Ÿ‘‘)
  • --log-alarm โ€” raise the specified alarm when a log line matches the given regexp. syntax: <alarm>[,alarm...] <regexp>
  • --alarm-log โ€” raise the specified alarm when a log line matches the given regexp. syntax: <alarm>[,alarm...] <regexp>
  • --not-log-alarm โ€” the opposite energy: skip the specified alarm when a log line matches the given regexp. syntax: <alarm>[,alarm...] <regexp>
  • --not-alarm-log โ€” skip the specified alarm when a log line matches the given regexp. syntax: <alarm>[,alarm...] <regexp>
  • --alarm-list โ€” list every enabled alarm. window shopping โœจ
  • --alarms-list โ€” list enabled alarms.
  • --alarm-msg-size โ€” caps how big an alarm message can get. default is 8192.

<h2>๐Ÿ“ logging, my beloved ๐Ÿ“</h2>

  • --log-master โ€” hand the whole logging job over to the master process.
  • --log-master-bufsize โ€” set the buffer size for the master logger. heads up: chonkier log messages than that will get truncated ๐Ÿ’€
  • --log-master-stream โ€” make the master logpipe a SOCK_STREAM.
  • --log-master-req-stream โ€” make the master requests logpipe a SOCK_STREAM.
  • --log-reopen โ€” reopen the log after a reload. fresh start energy ๐ŸŒธ
  • --log-truncate โ€” truncate the log on startup.
  • --log-maxsize โ€” set the maximum logfile size.
  • --log-backupname โ€” set what the logfile gets named after rotation.
  • --logdate โ€” prefix logs with a date, or with a strftime string.
  • --log-date โ€” prefix logs with a date, or with a strftime string.
  • --log-prefix โ€” prefix logs with a string.
  • --log-zero โ€” log responses that have no body.
  • --log-slow โ€” log any request slower than the number of milliseconds you give it. ๐ŸŒ noticed
  • --log-4xx โ€” log requests that came back 4xx.
  • --log-5xx โ€” log requests that came back 5xx.
  • --log-big โ€” log requests bigger than the specified size.
  • --log-sendfile โ€” log sendfile requests.
  • --log-ioerror โ€” log requests that hit io errors.
  • --log-micros โ€” report response time in microseconds instead of milliseconds. precision queen ๐Ÿ”ฌ
  • --log-x-forwarded-for โ€” use the ip from the X-Forwarded-For header instead of REMOTE_ADDR.

<h2>๐Ÿ” privileges, cwd &amp; shells ๐Ÿ”</h2>

  • --master-as-root โ€” leave the master process running as root. (yes it does what it says, be careful bestie)
  • --drop-after-init โ€” run the privileges drop after plugin initialization. superseded by drop-after-apps.
  • --drop-after-apps โ€” run the privileges drop after apps loading. superseded by master-as-root.
  • --force-cwd โ€” force the initial working directory to the value you give it.
  • --binsh โ€” override /bin/sh (this is what exec hooks use; 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.

<h2>๐Ÿ˜ด lazy, cheap &amp; cheaper modes ๐Ÿ˜ด</h2>

  • --lazy โ€” set lazy mode (load apps in workers instead of master).
  • --lazy-apps โ€” load apps in each worker instead of the master.
  • --cheap โ€” set cheap mode (spawn workers only after the first request).
  • --cheaper โ€” set cheaper mode (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.
  • --cheaper-rss-limit-soft โ€” don't spawn new workers if the total resident memory usage of all workers is higher than this limit. ๐Ÿซถ boundaries
  • --cheaper-rss-limit-hard โ€” if total workers resident memory usage is higher, try to stop workers.
  • --idle โ€” set idle mode (put uWSGI in cheap mode after inactivity).
  • --die-on-idle โ€” shut uWSGI down when it's idle. dramatic exit, love that for her ๐Ÿ’…

<h2>๐Ÿงต mounting &amp; threads ๐Ÿงต</h2>

  • --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 specified number of threads.
  • --thread-stacksize โ€” set threads stacksize.
  • --threads-stacksize โ€” set threads stacksize.
  • --thread-stack-size โ€” set threads stacksize.
  • --threads-stack-size โ€” set threads stacksize. (four spellings, one destiny โœจ)

<h2>๐Ÿ  virtualhosting ๐Ÿ </h2>

  • --vhost โ€” enable virtualhosting mode (based on the SERVER_NAME variable).
  • --vhost-host โ€” enable virtualhosting mode (based on the HTTP_HOST variable).

<h2>๐Ÿ›ฃ๏ธ routing era, part one: the regular routes ๐Ÿ›ฃ๏ธ</h2>

  • --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 (the negate version). ๐Ÿ™ƒ
  • --route-run โ€” always run the specified route action.

<h2>๐Ÿ final routes ๐Ÿ</h2>

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

<h2>๐Ÿ’ฅ error routes ๐Ÿ’ฅ</h2>

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

<h2>๐Ÿ“ฌ response routes ๐Ÿ“ฌ</h2>

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

<h2>๐Ÿงญ routers &amp; error pages ๐Ÿงญ</h2>

  • --router-list โ€” list enabled routers.
  • --routers-list โ€” list enabled routers.
  • --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.

<h2>๐Ÿฆ‹ websockets &amp; chunked input ๐Ÿฆ‹</h2>

  • --websockets-ping-freq โ€” set the frequency (in seconds) of the websockets automatic ping packets.
  • --websocket-ping-freq โ€” set the frequency (in seconds) of the 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 1024).
  • --websocket-max-size โ€” set the max allowed size of websocket messages (in Kbytes, default 1024).
  • --chunked-input-limit โ€” set the max size of a chunked input part (default 1MB, in bytes).
  • --chunked-input-timeout โ€” set the default timeout for chunked input.

<h2>โฐ clocks โฐ</h2>

  • --clock โ€” set a clock source.
  • --clock-list โ€” list enabled clocks.

okay bestie, deep breath, we're in the final stretch of the option list and it is long, but you've got this and I've got you ๐Ÿ’– buckle up:

  • --clocks-list โ€” lists all the enabled clocks โฐ like a little roll call for time itself
  • --add-header โ€” auto-slaps HTTP headers onto the response, no manual labor required ๐Ÿ’…
  • --rem-header โ€” auto-yeets the HTTP header you specify right out of the response
  • --del-header โ€” same energy, auto-removes the HTTP header you name from the response ๐Ÿซถ
  • --collect-header โ€” stashes the response header you name into a request var (syntax: header var)
  • --response-header-collect โ€” literally the same thing: stash the named response header in a request var (syntax: header var)
  • --pull-header โ€” stashes the named response header in a request var and rips it out of the response (syntax: header var) ๐Ÿ™ˆ
  • --check-static โ€” looks for static files in the directory you point at
  • --check-static-docroot โ€” looks for static files in the requested DOCUMENT_ROOT
  • --static-check โ€” yep, looks for static files in the directory you gave it
  • --static-map โ€” maps a mountpoint to a static directory (or a single file)
  • --static-map2 โ€” like static-map but it fully appends the requested resource onto the docroot
  • --static-skip-ext โ€” skips that specific extension when it's doing static file checks
  • --static-index โ€” if someone requests a directory, it goes hunting for the file you specified
  • --static-safe โ€” skips the security checks when the file lives under the path you named
  • --static-cache-paths โ€” drops resolved paths into the uWSGI cache for however many seconds you say
  • --static-cache-paths-name โ€” uses the cache you picked for static paths
  • --mimefile โ€” sets the mime types file path (default /etc/mime.types)
  • --mime-file โ€” sets the mime types file path (default /etc/mime.types) โ€” yes bestie it's the twin โœจ
  • --static-expires-type โ€” sets the Expires header based on content type
  • --static-expires-type-mtime โ€” sets the Expires header based on content type and file mtime
  • --static-expires โ€” sets the Expires header based on filename regexp
  • --static-expires-mtime โ€” sets the Expires header based on filename regexp and file mtime
  • --static-expires-uri โ€” sets the Expires header based on REQUEST_URI regexp
  • --static-expires-uri-mtime โ€” sets the Expires header based on REQUEST_URI regexp and file mtime
  • --static-expires-path-info โ€” sets the Expires header based on PATH_INFO regexp
  • --static-expires-path-info-mtime โ€” sets the Expires header based on PATH_INFO regexp and file mtime
  • --static-gzip โ€” if your regexp matches the static file translation, it'll go look for a gzip version ๐Ÿ—œ๏ธ
  • --static-gzip-all โ€” checks for a gzip version of every requested static file, no exceptions
  • --static-gzip-dir โ€” checks for a gzip version of all requested static files in the dir/prefix you gave
  • --static-gzip-prefix โ€” also 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 set
  • --static-gzip-suffix โ€” again: 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 (per-worker, default 0)
  • --offload-thread โ€” sets how many offload threads to spawn (per-worker, default 0) ๐Ÿงต
  • --file-serve-mode โ€” sets the static file serving mode
  • --fileserve-mode โ€” sets the static file serving mode (same fit, different spelling)
  • --disable-sendfile โ€” kills sendfile() and makes it rely on the extremely boring read()/write() ๐Ÿ’€
  • --check-cache โ€” checks for response data in the cache you name (leave it empty for the default cache)
  • --close-on-exec โ€” sets close-on-exec on connection sockets (could be required for spawning processes in requests)
  • --close-on-exec2 โ€” sets close-on-exec on server sockets (could be required for spawning processes in requests)

static files? handled. headers? handled. we're so back ๐Ÿฆ‹

  • --mode โ€” sets a uWSGI custom mode
  • --env โ€” sets an environment variable
  • --envdir โ€” loads a daemontools compatible envdir
  • --early-envdir โ€” loads a daemontools compatible envdir ASAP โšก
  • --unenv โ€” unsets an environment variable (the breakup option)
  • --vacuum โ€” tries to remove all of the generated file/sockets, Marie Kondo style ๐Ÿงน
  • --file-write โ€” writes the content you specify to the file you specify (syntax: file=value) before privileges drop
  • --cgroup โ€” puts the processes in the cgroup you named
  • --cgroup-opt โ€” sets a value in the cgroup option you named
  • --cgroup-dir-mode โ€” sets permission for the cgroup directory (default is 700)
  • --namespace โ€” runs in a new namespace under the rootfs you specify
  • --namespace-keep-mount โ€” keeps the mountpoint you named inside your namespace
  • --ns โ€” runs in a new namespace under the specified rootfs (short king ๐Ÿ‘‘)
  • --namespace-net โ€” adds a network namespace
  • --ns-net โ€” adds a network namespace
  • --enable-proxy-protocol โ€” enables PROXY1 protocol support (only for http parsers)
  • --reuse-port โ€” enables the REUSE_PORT flag on a socket (BSD only ๐ŸŒŠ)
  • --tcp-fast-open โ€” enables the TCP_FASTOPEN flag on TCP sockets with the qlen value you give
  • --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 supported
  • --tcp-fastopen-client โ€” uses sendto(..., MSG_FASTOPEN, ...) instead of connect() if supported
  • --zerg โ€” attaches to a zerg server ๐Ÿ›
  • --zerg-fallback โ€” falls back to normal sockets if the zerg server isn't available (no shame in a plan B)
  • --zerg-server โ€” enables the zerg server on the UNIX socket you specify
  • --cron โ€” adds a cron task
  • --cron2 โ€” adds a cron task (key=val syntax)
  • --unique-cron โ€” adds 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 only runs when the instance is a lord of the legion you named
  • --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 โ€” selects the uWSGI loop engine ๐Ÿ”
  • --loop-list โ€” lists the enabled loop engines
  • --loops-list โ€” lists the enabled loop engines (plural girlies, same answer)

daemons, plugins, and the grand finale, let's gooo ๐Ÿ’…

  • --worker-exec โ€” runs the command you specify as a worker
  • --worker-exec2 โ€” runs the specified command as a worker (after the post_fork hook)
  • --attach-daemon โ€” attaches a command/daemon to the master process โš ๏ธ the command has to not go in 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 ๐Ÿ˜ญ ride or die fr
  • --smart-attach-daemon โ€” attaches a command/daemon to the master process managed by a pidfile (this time 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 โ€” opposite day)
  • --legion-attach-daemon โ€” same as --attach-daemon but the daemon runs only on a legion lord node
  • --legion-smart-attach-daemon โ€” same as --smart-attach-daemon but it runs only on a legion lord node
  • --legion-smart-attach-daemon2 โ€” same as --smart-attach-daemon2 but it runs only on a legion lord node
  • --daemons-honour-stdin โ€” does not change the stdin of external daemons to /dev/null (respecting their little stdin, cute)
  • --attach-daemon2 โ€” the attach-daemon keyval variant (supports smart modes too)
  • --plugins โ€” loads uWSGI plugins ๐Ÿงฉ
  • --plugin โ€” loads uWSGI plugins
  • --need-plugins โ€” loads uWSGI plugins (and exits on error, no half measures)
  • --need-plugin โ€” loads 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 the enabled plugins
  • --plugin-list โ€” lists the enabled plugins
  • --autoload โ€” tries to automatically load plugins when it bumps into unknown options
  • --dlopen โ€” blindly loads a shared library ๐Ÿ™ˆ (it does not ask questions)
  • --allowed-modifiers โ€” a comma separated list of allowed modifiers
  • --remap-modifier โ€” remaps a request modifier from one id to another
  • --dump-options โ€” dumps the full list of every available option (yes, all of them, all 40-million ๐Ÿซ )
  • --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 โ€” a simple print
  • --iprint โ€” a simple print, but the immediate version โšก
  • --exit โ€” forces exit() of the instance, dramatic exit, door slam, periodt
  • --cflags โ€” reports uWSGI CFLAGS (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 (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)

and that's the whole list bestie, we ATE ๐Ÿ“ every single flag survived the vibe check, nothing dropped, nothing merged, no cap.

this page is uwsgi_emperor_pg, version 2.0.31-debian, dated July 2026, living in section UWSGI_EMPEROR_PG(1) โ€” and with that, the manual is officially over. go forth and serve some static files, you absolute icon ๐Ÿ’–โœจ๐ŸŽ€
๐Ÿ“ฆ where this page comes from