UWSGI_PYTHON3(1)
๐ธ UWSGI_PYTHON3 ๐ธ
okay bestie, gather round ๐ this is the man page for uwsgi_python3 โ a.k.a. the "fast (pure C), self-healing, developer-friendly WSGI server". Yes that is its whole personality. Pure C. Self-healing. Developer-friendly. It's giving main character energy and I'm obsessed ๐ซถ
โจ SYNOPSIS โจ
uwsgi-core [options...]
That's it. That's the whole vibe. You just throw options at it and it does stuff. Slay.
๐ DESCRIPTION ๐
okay so this is the big section and it's literally just a giant list of every option you can pass. There are SO many. buckle up, we're going through all of them, no skipping, periodt. โจ
๐ฆ sockets (the "where do I listen" era)
-s,--socketโ bind to the specified UNIX/TCP socket using default protocol-s,--uwsgi-socketโ bind to the specified UNIX/TCP socket using uwsgi protocol--suwsgi-socketโ bind to the specified UNIX/TCP socket using uwsgi protocol over SSL--ssl-socketโ bind to the specified UNIX/TCP socket using uwsgi protocol over SSL--http-socketโ bind to the specified UNIX/TCP socket using HTTP protocol--http-socket-modifier1โ force the specified modifier1 when using HTTP protocol--http-socket-modifier2โ force the specified modifier2 when using HTTP protocol--http11-socketโ bind to the specified UNIX/TCP socket using HTTP 1.1 (Keep-Alive) protocol--https-socketโ bind to the specified UNIX/TCP socket using HTTPS protocol--https-socket-modifier1โ force the specified modifier1 when using HTTPS protocol--https-socket-modifier2โ force the specified modifier2 when using HTTPS protocol--fastcgi-socketโ bind to the specified UNIX/TCP socket using FastCGI protocol--fastcgi-nph-socketโ bind to the specified UNIX/TCP socket using FastCGI protocol (nph mode)--fastcgi-modifier1โ force the specified modifier1 when using FastCGI protocol--fastcgi-modifier2โ force the specified modifier2 when using FastCGI protocol--scgi-socketโ bind to the specified UNIX/TCP socket using SCGI protocol--scgi-nph-socketโ bind to the specified UNIX/TCP socket using SCGI protocol (nph mode)--scgi-modifier1โ force the specified modifier1 when using SCGI protocol--scgi-modifier2โ force the specified modifier2 when using SCGI protocol--raw-socketโ bind to the specified UNIX/TCP socket using RAW protocol--raw-modifier1โ force the specified modifier1 when using RAW protocol--raw-modifier2โ force the specified modifier2 when using RAW protocol--puwsgi-socketโ bind to the specified UNIX/TCP socket using persistent uwsgi protocol (puwsgi)--protocolโ force the specified protocol for default sockets--socket-protocolโ force the specified protocol for default sockets--shared-socketโ create a shared socket for advanced jailing or ipc--undeferred-shared-socketโ create a shared socket for advanced jailing or ipc (undeferred mode)
๐ workers & harakiri (the chaos management era)
-p,--processesโ spawn the specified number of workers/processes-p,--workersโ spawn the specified number of workers/processes--thunder-lockโ serialize accept() usage (if possible)-t,--harakiriโ set harakiri timeout--harakiri-verboseโ enable verbose mode for harakiri--harakiri-graceful-timeoutโ interval between graceful harakiri attempt and a sigkill--harakiri-graceful-signalโ use this signal instead of sigterm for graceful harakiri attempts--harakiri-queue-thresholdโ only trigger harakiri if queue is greater than this threshold--harakiri-no-arhโ do not enable harakiri during after-request-hook--no-harakiri-arhโ do not enable harakiri during after-request-hook--no-harakiri-after-req-hookโ do not enable harakiri during after-request-hook--backtrace-depthโ set backtrace depth--mule-harakiriโ set harakiri timeout for mule tasks
ngl "harakiri" is a whole mood ๐ it's the thing that kills a worker that's taking too long. dramatic but necessary.
๐ config loading & placeholders
-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)
ok "sytax" ๐ that is literally how it's spelled in here, I'm not making this up, I'm just the messenger bestie
๐ง opt logic (yes, there's a whole mini language in here)
--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 existence--if-not-fileโ (opt logic) check for file existence--if-dirโ (opt logic) check for directory existence--if-not-dirโ (opt logic) check for directory existence--ifdirโ (opt logic) check for directory existence--if-directoryโ (opt logic) check for directory existence--endifโ (opt logic) end if--end-ifโ (opt logic) end if
periodt. that's a full if/for language living inside your config file. iconic behavior honestly ๐
๐ blacklist / whitelist
--blacklistโ set options blacklist context--end-blacklistโ clear options blacklist context--whitelistโ set options whitelist context--end-whitelistโ clear options whitelist context
๐ฅ errors & signals (the "please stop yelling at me" era)
--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()
bestie note: the word "annoying" is their word, not mine, they're literally in the source. relatable tho ๐
๐ฉท config templates & includes
--inheritโ use the specified file as config template--includeโ include the specified file as immediate configuration--inject-beforeโ inject a text file before the config file (advanced templating)--inject-afterโ inject a text file after the config file (advanced templating)
๐ daemon / instance management
-d,--daemonizeโ daemonize uWSGI--daemonize2โ daemonize uWSGI after app loading--stopโ stop an instance--reloadโ reload an instance--pauseโ pause an instance--suspendโ suspend an instance--resumeโ resume an instance--connect-and-readโ connect to a socket and wait for data from it--extractโ fetch/dump any supported address to stdout
๐ tuning & sizing
-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
๐ socket modes & permissions
-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 & process names
-T,--enable-threadsโ enable threads (stub option this is true by default)--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
โญ app loading & master
-i,--single-interpreterโ do not use multiple interpreters (where available)--need-appโ exit if no app can be loaded-M,--masterโ enable master process--honour-stdinโ do not remap stdin to /dev/null
๐ธ the Emperor (yes it's called that, and it's not beating the allegations)
--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
"cursed vassals" ๐ญ that's a real option. I have no notes. absolute cinema.
ok that's part 1 bestie, and there is so much more coming โ don't go anywhere ๐โจ
okay so continuing the options, bestie โ there's a LOT, but we're slaying through it ๐
--emperor-pidfileโ writes the Emperor pid into the file u specify ๐--emperor-tyrantโ puts the Emperor in Tyrant mode ๐--emperor-tyrant-nofollowโ does not follow symlinks when checking for uid/gid in Tyrant mode ๐ซ๐--emperor-statsโ runs the Emperor stats server ๐--emperor-stats-serverโ runs the Emperor stats server โจ--early-emperorโ spawns the emperor as soon as possible ๐ฃ--emperor-broodlordโ runs the emperor in BroodLord mode ๐--emperor-throttleโ sets the throttling level (in milliseconds) for bad behaving vassals (default1000) โณ--emperor-max-throttleโ sets the max throttling level (in milliseconds) for bad behaving vassals (default3 minutes) ๐ค--emperor-magic-execโ prefixes vassals config files withexec://if they have the executable bit โจ--emperor-on-demand-extensionโ searches for a text file (vassal name + extension) containing the on demand socket name ๐--emperor-on-demand-extโ searches for a text file (vassal name + extension) containing the on demand socket name ๐ง--emperor-on-demand-directoryโ enables on demand mode binding to the unix socket in the specified directory named like the vassal +.socket๐--emperor-on-demand-dirโ enables on demand mode binding to the unix socket in the specified directory named like the vassal +.socket๐ช--emperor-on-demand-execโ uses the output of the specified command as on demand socket name (the vassal name is passed as the only argument) ๐โ๏ธ--emperor-extra-extensionโ allows the specified extension in the Emperor (vassal will be called with--config) ๐--emperor-extra-extโ allows the specified extension in the Emperor (vassal will be called with--config) ๐ซ--emperor-no-blacklistโ disables Emperor blacklisting subsystem ๐ซ--emperor-use-cloneโ usesclone()instead offork()passing the specifiedunshare()flags ๐งฌ--emperor-graceful-shutdownโ uses vassals graceful shutdown during ragnarok ๐--emperor-capโ sets vassals capability ๐ฉ--vassals-capโ sets vassals capability ๐งข--vassal-capโ sets vassals capability ๐--imperial-monitor-listโ lists enabled imperial monitors ๐--imperial-monitors-listโ lists enabled imperial monitors ๐๏ธ--vassals-inheritโ adds config templates to vassals config (uses--inherit) ๐--vassals-includeโ includes config templates to vassals config (uses--includeinstead of--inherit) ๐ฅ--vassals-inherit-beforeโ adds config templates to vassals config (uses--inherit, parses before the vassal file) ๐--vassals-include-beforeโ includes config templates to vassals config (uses--includeinstead of--inherit, parses before the vassal file) ๐--vassals-start-hookโ runs the specified command before each vassal starts ๐ฌ--vassals-stop-hookโ runs the specified command after vassal's death ๐ชฆ--vassal-sosโ asks emperor for reinforcement when overloaded ๐--vassal-sos-backlogโ asks emperor for sos if backlog queue has more items than the value specified ๐ฌ--vassals-setโ automatically sets the specified option (via--set) for every vassal ๐ฏ--vassal-setโ automatically sets the specified option (via--set) for every vassal ๐--heartbeatโ announces healthiness to the emperor ๐--reload-mercyโ sets the maximum time (in seconds) we wait for workers and other processes to die during reload/shutdown ๐๏ธ--worker-reload-mercyโ sets the maximum time (in seconds) a worker can take to reload/shutdown (default is60) โฑ๏ธ--mule-reload-mercyโ sets the maximum time (in seconds) a mule can take to reload/shutdown (default is60) ๐ด--exit-on-reloadโ forces exit even if a reload is requested ๐--die-on-termโ exits instead of brutal reload onSIGTERM๐--force-gatewayโ forces the spawn of the first registered gateway without a master ๐ช-h,--helpโ shows this help ๐ซถ-h,--usageโ shows this help ๐--print-symโ prints content of the specified binary symbol ๐--print-symbolโ prints content of the specified binary symbol ๐-r,--reaperโ callswaitpid(-1,...)after each request to get rid of zombies ๐ง-R,--max-requestsโ reloads workers after the specified amount of managed requests ๐--max-requests-deltaโ adds(worker_id * delta)to themax_requestsvalue of each worker ๐ข--min-worker-lifetimeโ number of seconds worker must run before being reloaded (default is10) โณ--max-worker-lifetimeโ reloads workers after the specified amount of seconds (default isdisabled) ๐ซ--max-worker-lifetime-deltaโ adds(worker_id * delta)seconds to themax_worker_lifetimevalue of each worker โจ-z,--socket-timeoutโ sets internal sockets timeout ๐ฐ๏ธ--no-fd-passingโ disables file descriptor passing ๐ซ๐จ--locksโ creates the specified number of shared locks ๐--lock-engineโ sets the lock engine โ๏ธ--ftokโ sets the ipcsem key viaftok()for avoiding duplicates ๐๏ธ--persistent-ipcsemโ does not remove ipcsem's on shutdown ๐งฒ-A,--sharedareaโ creates a raw shared memory area of specified pages (note: it supports keyval too) ๐ฆ--safe-fdโ does not close the specified file descriptor ๐ก๏ธ--fd-safeโ does not close the specified file descriptor ๐--cacheโ creates a shared cache containing given elements ๐๏ธ--cache-blocksizeโ sets cache blocksize ๐งฑ--cache-storeโ enables persistent cache to disk ๐พ--cache-store-syncโ sets frequency of sync for persistent cache ๐--cache-no-expireโ disables auto sweep of expired items ๐ป--cache-expire-freqโ sets the frequency of cache sweeper scans (default3 seconds) ๐งน--cache-report-freed-itemsโ constantly reports the cache item freed by the sweeper (use only for debug) โ ๏ธ--cache-udp-serverโ binds the cache udp server (used only for set/update/delete) to the specified socket ๐ก--cache-udp-nodeโ sends cache update/deletion to the specified cache udp server ๐ค--cache-syncโ copies the whole content of another uWSGI cache server on server startup ๐งฌ--cache-use-last-modifiedโ updateslast_modified_attimestamp on every cache item modification (default isdisabled) โฐ--add-cache-itemโ adds an item in the cache โ--load-file-in-cacheโ loads a static file in the cache ๐--load-file-in-cache-gzipโ loads a static file in the cache with gzip compression ๐๏ธ--cache2โ creates a new generation shared cache (keyval syntax) ๐--queueโ enables shared queue ๐--queue-blocksizeโ sets queue blocksize ๐งฑ--queue-storeโ enables persistent queue to disk ๐พ--queue-store-syncโ sets frequency of sync for persistent queue ๐-Q,--spoolerโ runs a spooler on the specified directory ๐งต--spooler-externalโ maps spoolers requests to a spooler directory managed by an external instance ๐--spooler-orderedโ tries to order the execution of spooler tasks ๐--spooler-chdirโ doeschdir()to specified directory before each spooler task ๐--spooler-processesโ sets the number of processes for spoolers ๐งฎ--spooler-quietโ does not be verbose with spooler tasks ๐คซ--spooler-max-tasksโ sets the maximum number of tasks to run before recycling a spooler ๐--spooler-harakiriโ sets harakiri timeout for spooler tasks ๐ก๏ธ--spooler-frequencyโ sets spooler frequency ๐ถ--spooler-freqโ sets spooler frequency ๐--muleโ adds a mule ๐ด--mulesโ adds the specified number of mules ๐ด๐ด--farmโ adds a mule farm ๐--mule-msg-sizeโ sets mule message buffer size ๐จ--signalโ sends a uwsgi signal to a server ๐ก--signal-bufsizeโ sets buffer size for signal queue ๐ฆ--signals-bufsizeโ sets buffer size for signal queue ๐๏ธ--signal-timerโ adds a timer (syntax:<signal> <seconds>) โฒ๏ธ--timerโ adds a timer (syntax:<signal> <seconds>) โฑ๏ธ--signal-rbtimerโ adds a redblack timer (syntax:<signal> <seconds>) ๐ดโซ--rbtimerโ adds a redblack timer (syntax:<signal> <seconds>) ๐ณ--rpc-maxโ maximum number of rpc slots (default:64) ๐-L,--disable-loggingโ disables request logging ๐ซ๐--flockโ locks the specified file before starting, exits if locked ๐--flock-waitโ locks the specified file before starting, waits if locked โณ--flock2โ locks the specified file after logging/daemon setup, exits if locked ๐--flock-wait2โ locks the specified file after logging/daemon setup, waits if locked ๐ฐ๏ธ--pidfileโ creates pidfile (before privileges drop) ๐--pidfile2โ creates pidfile (after privileges drop) ๐--safe-pidfileโ creates safe pidfile (before privileges drop) ๐ก๏ธ--safe-pidfile2โ creates safe pidfile (after privileges drop) ๐ก๏ธ๐--chrootโ doeschroot()to the specified directory ๐ฆ--pivot-rootโ doespivot_root()to the specified directories (new_rootandput_oldmust be separated with a space) ๐--pivot_rootโ doespivot_root()to the specified directories (new_rootandput_oldmust be separated with a space) ๐--uidโ doessetuidto the specified user/uid ๐ค--gidโ doessetgidto the specified group/gid ๐ฅ--add-gidโ adds the specified group id to the process credentials โ๐ฅ--immediate-uidโ doessetuidto the specified user/uid IMMEDIATELY โก--immediate-gidโ doessetgidto the specified group/gid IMMEDIATELY โก๐ฅ--no-initgroupsโ disables additional groups set viainitgroups()๐ซ--capโ sets process capability ๐ฉ--unshareโ doesunshare()part of the processes and puts it in a new namespace ๐--unshare2โ doesunshare()part of the processes and puts it in a new namespace after rootfs change ๐--setns-socketโ exposes a unix socket returning namespace fds from/proc/self/ns๐--setns-socket-skipโ skips the specified entry when sending setns file descriptors ๐ซ--setns-skipโ skips the specified entry when sending setns file descriptors โญ๏ธ--setnsโ joins a namespace created by an external uWSGI instance ๐--setns-preopenโ opens/proc/self/nsas soon as possible and caches fds ๐๏ธ--jailedโ marks this whole instance as jailed โจ (which means thepost_jailhooks get forced to actually run, no skipping).--reforkโ does afork()all over again after privileges drop. Super handy for jailing systems.--re-forkโ bestie this is literally the same thing as--refork:fork()again after privileges drop, for jailing systems. ๐--refork-as-rootโfork()again, but this time before privileges drop. Jailing systems love this one.--re-fork-as-rootโ same vibe as--refork-as-root, spelled different:fork()again before privileges drop, for jailing systems.--refork-post-jailโfork()again after jailing. Yes, again for jailing systems. It's giving fork-obsessed. ๐ด--re-fork-post-jailโ the twin of--refork-post-jail:fork()again after jailing, for jailing systems.--hook-asapโ runs whatever hook you specified as soon as possible. No waiting. Girlies with no chill. โก--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 inside the jail, after initialization.--hook-as-rootโ run the specified hook before privileges drop (so, as root ๐).--hook-as-userโ run the specified hook after privileges drop (hi, unprivileged era).--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 every single 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, but only once per-instance.--hook-accepting1-onceโ run the specified hook after the first worker enters the accepting phase, once per instance. One and done, periodt.--hook-master-startโ run the specified hook when the Master starts. ๐ซก--hook-touchโ run the specified hook when the specified file is touched. Syntax is literally:<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 beforeexec()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. (Same energy, different flag name.)
--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 the 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 beforeexec()ing the vassal.--exec-as-emperorโ run the specified command in the emperor, after the vassal has been started.
--mount-asapโ mount the filesystem as soon as possible. โก--mount-pre-jailโ mount the filesystem before jailing.--mount-post-jailโ mount the filesystem after jailing.--mount-in-jailโ mount the filesystem in the jail, after initialization.--mount-as-rootโ mount the filesystem before privileges drop.--mount-as-vassalโ mount the filesystem beforeexec()ing the vassal.--mount-as-emperorโ mount the filesystem in the emperor after the vassal has been started.--umount-asapโ unmount the filesystem as soon as possible. ๐ซถ--umount-pre-jailโ unmount the filesystem before jailing.--umount-post-jailโ unmount the filesystem after jailing.--umount-in-jailโ unmount the filesystem in the jail, after initialization.--umount-as-rootโ unmount the filesystem before privileges drop.--umount-as-vassalโ unmount the filesystem beforeexec()ing the vassal.--umount-as-emperorโ unmount the filesystem in the emperor after the vassal has been started.
--wait-for-interfaceโ wait for the specified network interface to come up before running root hooks.--wait-for-interface-timeoutโ set the timeout forwait-for-interface. โฐ--wait-interfaceโ wait for the specified network interface to come up before running root hooks. (Same thing, shorter name.)--wait-interface-timeoutโ set the timeout forwait-for-interface.--wait-for-ifaceโ wait for the specified network interface to come up before running root hooks. (Yes, another alias. They're multiplying.)--wait-for-iface-timeoutโ set the timeout forwait-for-interface.--wait-ifaceโ wait for the specified network interface to come up before running root hooks.--wait-iface-timeoutโ set the timeout forwait-for-interface.--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 forwait-for-fs/file/dir.--wait-for-socketโ wait for the specified socket to be ready before loading apps. ๐--wait-for-socket-timeoutโ set the timeout forwait-for-socket.
--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 the 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 specifiedfunction()beforeexec()ing the vassal.--call-as-vassal1โ call the specifiedfunction(char *)beforeexec()ing the vassal.--call-as-vassal3โ call the specifiedfunction(char *, uid_t, gid_t)beforeexec()ing the vassal.--call-as-emperorโ call the specifiedfunction()in the emperor after the vassal has been started.--call-as-emperor1โ call the specifiedfunction(char *)in the emperor after the vassal has been started.--call-as-emperor2โ call the specifiedfunction(char *, pid_t)in the emperor after the vassal has been started.--call-as-emperor4โ call the specifiedfunction(char *, pid_t, uid_t, gid_t)in the emperor after the vassal has been started.
See the pattern? The number in the name is how many args your function takes.1= one arg,3= three,4= four, and no number = no args. iykyk ๐ง
--iniโ load config from an ini file. (The classic.)-y,--yamlโ load config from a yaml file. ๐ธ-y,--ymlโ load config from a yaml file. (Same short flag-y, same vibe.)-j,--jsonโ load config from a json file.-j,--jsโ load config from a json file. (Yeah,--jsis just--jsonwearing a different fit.)--weightโ weight of the instance (used by clustering/lb/subscriptions).--auto-weightโ set the weight of the instance automatically (used by clustering/lb/subscriptions). ๐ค--no-serverโ force no-server mode.--command-modeโ force command mode.--no-defer-acceptโ disable deferred-accept on sockets.--tcp-nodelayโ enable TCPNODELAYon each request.--so-keepaliveโ enable TCPKEEPALIVEs.--so-send-timeoutโ setSO_SNDTIMEO.--socket-send-timeoutโ setSO_SNDTIMEO.--so-write-timeoutโ setSO_SNDTIMEO.--socket-write-timeoutโ setSO_SNDTIMEO. (Four flags, one syscall option. It's giving "we couldn't pick a name". ๐)--socket-sndbufโ setSO_SNDBUF.--socket-rcvbufโ setSO_RCVBUF.--shutdown-socketsโ force callingshutdown()in addition toclose()when sockets are destroyed.--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 the specified megabytes.--reload-on-rssโ reload if rss memory is higher than the specified megabytes.--evil-reload-on-asโ force the master to reload a worker if its address space is higher than the specified megabytes. ๐--evil-reload-on-rssโ force the master to reload a worker if its rss memory is higher than the 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. ๐--ksmโ enable Linux KSM.--pcre-jitโ enable pcre jit (if available).--never-swapโ lock all memory pages, avoiding swapping.--touch-reloadโ reload uWSGI if the specified file is modified/touched.--touch-workers-reloadโ trigger reload of (only) the 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 a command when the specified file is modified/touched. Syntax:file command
Not me noticing that the whole touch-* crew is just "poke a file, get a behaviour". Chef's kiss. ๐
--touch-signalโ watcher vibes โจ when the file you named gets modified/touched, it fires a signal (syntax:file signal)--fs-reloadโ when that filesystem object gets modified, we do a graceful reload ๐--fs-brutal-reloadโ same energy but brutal reload when the filesystem object changes ๐ค--fs-signalโ raise a uwsgi signal when the filesystem object is modified (syntax:file signal)--check-mountpointโ if a filesystem is no longer reachable, the instance gets destroyed. Lowkey perfect for reliable Fuse management ๐ซถ--mountpoint-checkโ same thing, different name: destroy the instance if a filesystem is no more reachable (handy for reliable Fuse management)--check-mountโ yep, also the same: destroy the instance if a filesystem is no more reachable (great for reliable Fuse management)--mount-checkโ one more alias, bestie: destroy the instance if a filesystem is no more reachable (for reliable Fuse management) ๐ฆ--propagate-touchโ the over-engineering option, periodt. For systems with flaky signal management ๐--limit-postโ cap the request body, no exceptions--no-orphansโ automatically kill workers if the master dies (ngl this can be dangerous for availability โ ๏ธ)--prioโ set processes/threads priority--cpu-affinityโ set cpu affinity, pin those babies down ๐--post-bufferingโ set the size in bytes after which it will buffer to disk instead of memory ๐พ--post-buffering-bufsizeโ set the buffer size forread()in post buffering mode--body-read-warningโ set the amount of allowed memory allocation (in megabytes) for a request body before it starts printing a warning ๐--upload-progressโ turns on creation of.jsonfiles in the directory you specify, during a file upload--no-default-appโ do not fallback to the default app--manage-script-nameโ automatically rewriteSCRIPT_NAMEandPATH_INFO--ignore-script-nameโ ignoreSCRIPT_NAME--catch-exceptionsโ report the exception as http output (discouraged, use only for testing ๐งช)--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โ turn on the metrics subsystem--metricโ add a custom metric โจ--metric-thresholdโ add a metric threshold/alarm ๐จ--metric-alarmโ add a metric threshold/alarm (same thing, different outfit)--alarm-metricโ add a metric threshold/alarm (third alias, iconic)--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 give it ๐ก--statsโ enable the stats server on the specified address--stats-serverโ enable the stats server on the specified address (twin flame behavior ๐)--stats-httpโ prefix stats server json output with http headers--stats-minifiedโ minify the statistics json output--stats-minโ minify statistics json output (same, shorter, cuter)--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 (plural edition ๐)--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 (default1)--master-fifoโ enable the master fifo ๐--notify-socketโ enable the notification socket--subscription-notify-socketโ set the notification socket for subscriptions--legionโ become a member of a legion ๐--legion-mcastโ become a member of a legion (shortcut for multicast)--legion-nodeโ add a node to a legion--legion-freqโ set the frequency of legion packets--legion-toleranceโ set the tolerance of the legion subsystem--legion-death-on-lord-errorโ declare itself as a dead node for the specified amount of seconds if one of the lord hooks fails ๐--legion-skew-toleranceโ set the clock skew tolerance of the legion subsystem (default60seconds)--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 (the first time quorum is reached)--legion-node-joinedโ action to call when a new node joins the legion--legion-node-leftโ action to call when a node leaves the legion--legion-quorumโ set the quorum of a legion--legion-scrollโ set the scroll of a legion--legion-scroll-max-sizeโ set the max size of the legion scroll buffer--legion-scroll-list-max-sizeโ set the max size of the legion scroll list buffer--subscriptions-sign-checkโ set the digest algorithm and certificate directory for the secured subscription system--subscriptions-sign-check-toleranceโ set the maximum tolerance (in seconds) of clock skew for the secured subscription system--subscriptions-sign-skip-uidโ skip the signature check for the specified uid when using unix sockets credentials ๐--subscriptions-credentials-checkโ add a directory to search for subscriptions key credentials--subscriptions-use-credentialsโ enable management ofSCM_CREDENTIALSin 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 (shortest king ๐)--subscribeโ subscribe to the specified subscription server--subscribe2โ subscribe to the specified subscription server using advanced keyval syntax โจ--subscribe-freqโ send the subscription announce at the specified interval--subscription-toleranceโ set tolerance for subscription servers--unsubscribe-on-graceful-reloadโ force the unsubscribe request even during a graceful reload--start-unsubscribedโ configure subscriptions but do not send them (so 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 the maximum certificate verification depth--sniโ add an SNI-governed SSL context--sni-dirโ check for thecert/key/client_cafile in the specified directory and create a sni/ssl context on demand--sni-dir-ciphersโ set the ssl ciphers for thesni-diroption--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, bestie ๐ข)--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 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 ๐)--logtoโ set the logfile/udp address--logto2โ log to the specified file or udp address after privileges drop--log-formatโ set the advanced format for request logging--logformatโ set the advanced format for request logging (alias bestie)--logformat-strftimeโ applystrftimeto logformat output--log-format-strftimeโ applystrftimeto logformat output (same thing, different spelling ๐ )--logfile-chownโchownlogfiles--logfile-chmodโchmodlogfiles--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 the enabled loggers ๐๏ธ--loggers-listโ list the 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 (i.e. do not show) log lines matching the regexp you give--log-filterโ show only the log lines matching the specified regexp--log-routeโ log to the specified named logger if the regexp applied on the logline matches--log-req-routeโ log requests to the specified named logger if the regexp applied on the logline matches--use-abortโ callabort()on segfault/fpe, which could be useful for generating a core dump ๐--alarmโ create a new alarm, syntax:<alarm> <plugin:args>๐จ
okay so the options keep coming and now we're deep in alarm + logging + routing territory, so grab a snack bestie, we're going through every single one ๐
--alarm-cheapโ use the main alarm thread instead of spinning up dedicated threads for curl-based alarms (no extra thread babies, the main one handles it) ๐งต--alarm-freqโ tune the anti-loop alarm system (default3seconds). yes it's literally watching out for loops, iconic behaviour tbh--alarm-fdโ raise the specified alarm when an fd is read for read. by default it reads1byte, so set8foreventfd๐--alarm-segfaultโ raise the specified alarm when the segmentation fault handler is executed ๐ญ--segfault-alarmโ raise the specified alarm when the segmentation fault handler is executed (same vibe, different spelling, she contains multitudes)--alarm-backlogโ raise the specified alarm when the socket backlog queue is full ๐ซ--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, one job, that's range โจ)--log-alarmโ raise the specified alarm when a log line matches the specified regexp,syntax: <alarm>[,alarm...] <regexp>--alarm-logโ raise the specified alarm when a log line matches the specified regexp,syntax: <alarm>[,alarm...] <regexp>--not-log-alarmโ 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โ list enabled alarms ๐--alarms-listโ list enabled alarms (plural bestie, we love options)--alarm-msg-sizeโ set the max size of an alarm message (default8192)
--log-masterโ delegate logging to the master process ๐--log-master-bufsizeโ set the buffer size for the master logger. bigger log messages will be truncated ๐--log-master-streamโ create the master logpipe asSOCK_STREAM--log-master-req-streamโ create the master requests logpipe asSOCK_STREAM--log-reopenโ reopen log after reload ๐ฆ--log-truncateโ truncate log on startup--log-maxsizeโ set maximum logfile size--log-backupnameโ set logfile name after rotation--logdateโ prefix logs with date or astrftimestring ๐--log-dateโ prefix logs with date or astrftimestring--log-prefixโ prefix logs with a string--log-zeroโ log responses without body--log-slowโ log requests slower than the specified number of milliseconds ๐--log-4xxโ log requests with a4xxresponse--log-5xxโ log requests with a5xxresponse--log-bigโ log requests bigger than the specified size--log-sendfileโ log sendfile requests--log-ioerrorโ log requests with io errors--log-microsโ report response time in microseconds instead of milliseconds โฑ๏ธ--log-x-forwarded-forโ use the ip fromX-Forwarded-Forheader instead ofREMOTE_ADDR
--master-as-rootโ leave master process running as root. (yes, everyone's fave thing to do, proceed accordingly) ๐ฅ--drop-after-initโ run privileges drop after plugin initialization, superseded bydrop-after-apps--drop-after-appsโ run privileges drop after apps loading, superseded bymaster-as-root--force-cwdโ force the initial working directory to the specified value--binshโ override/bin/sh(used by exec hooks, it always fallback to/bin/sh, so don't stress)--chdirโ chdir to specified directory before apps loading--chdir2โ chdir to specified directory after apps loading--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 to algorithm used for adaptive process spawning--cheaper-stepโ number of additional processes to spawn at each overload--cheaper-overloadโ increase workers after specified overload--cheaper-algo-listโ list enabled cheapers algorithms--cheaper-algos-listโ list enabled cheapers algorithms--cheaper-listโ list enabled cheapers algorithms--cheaper-rss-limit-softโ don't spawn new workers if total resident memory usage of all workers is higher than this limit--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โ shutdown uWSGI when idle ๐--mountโ load application under mountpoint--worker-mountโ load application under 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--vhostโ enable virtualhosting mode (based onSERVER_NAMEvariable) ๐--vhost-hostโ enable virtualhosting mode (based onHTTP_HOSTvariable)
okay now the routing section, and bestie there are so many of these. every single one is here, we are not skipping a crumb ๐
--routeโ add a route ๐ค๏ธ--route-hostโ add a route based onHostheader--route-uriโ add a route based onREQUEST_URI--route-qsโ add a route based onQUERY_STRING--route-remote-addrโ add a route based onREMOTE_ADDR--route-user-agentโ add a route based onHTTP_USER_AGENT--route-remote-userโ add a route based onREMOTE_USER--route-refererโ add a route based onHTTP_REFERER--route-labelโ add a routing label (for use with goto)--route-ifโ add a route based on condition--route-if-notโ add a route based on condition (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 onHostheader--final-route-uriโ add a final route based onREQUEST_URI--final-route-qsโ add a final route based onQUERY_STRING--final-route-remote-addrโ add a final route based onREMOTE_ADDR--final-route-user-agentโ add a final route based onHTTP_USER_AGENT--final-route-remote-userโ add a final route based onREMOTE_USER--final-route-refererโ add a final route based onHTTP_REFERER--final-route-labelโ add a final routing label (for use with goto)--final-route-ifโ add a final route based on condition--final-route-if-notโ add a final route based on 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 onHostheader--error-route-uriโ add an error route based onREQUEST_URI--error-route-qsโ add an error route based onQUERY_STRING--error-route-remote-addrโ add an error route based onREMOTE_ADDR--error-route-user-agentโ add an error route based onHTTP_USER_AGENT--error-route-remote-userโ add an error route based onREMOTE_USER--error-route-refererโ add an error route based onHTTP_REFERER--error-route-labelโ add an error routing label (for use with goto)--error-route-ifโ add an error route based on condition--error-route-if-notโ add an error route based on 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 onHostheader--response-route-uriโ add a response route based onREQUEST_URI--response-route-qsโ add a response route based onQUERY_STRING--response-route-remote-addrโ add a response route based onREMOTE_ADDR--response-route-user-agentโ add a response route based onHTTP_USER_AGENT--response-route-remote-userโ add a response route based onREMOTE_USER--response-route-refererโ add a response route based onHTTP_REFERER--response-route-labelโ add a response routing label (for use with goto)--response-route-ifโ add a response route based on condition--response-route-if-notโ add a response route based on condition (negate version)--response-route-runโ always run the specified response route action--router-listโ list enabled routers ๐--routers-listโ list enabled routers
--error-page-403โ add an error page (html) for managed403response--error-page-404โ add an error page (html) for managed404response--error-page-500โ add an error page (html) for managed500response
--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 websockets ping/pong subsystem--websocket-pong-toleranceโ set the tolerance (in seconds) of websockets ping/pong subsystem--websockets-max-sizeโ set the max allowed size of websocket messages (in Kbytes, default1024) ๐ฆ--websocket-max-sizeโ set the max allowed size of websocket messages (in Kbytes, default1024)--chunked-input-limitโ set the max size of a chunked input part (default1MB, in bytes)--chunked-input-timeoutโ set default timeout for chunked input โณ--clockโ set a clock source ๐ฐ๏ธ--clock-listโ list enabled clocks
and we are still going, don't go anywhere bestie, there's more coming ๐
--clocks-listโ lists all the enabled clocks, fr fr โฐ--add-headerโ auto-magically adds HTTP headers to the response โจ--rem-header,--del-headerโ both remove a specified HTTP header from the response, no cap ๐ซ--collect-header,--response-header-collectโ stashes the specified response header in a request var (syntax: header var) ๐ฅ--pull-headerโ stashes the specified response header in a request var AND removes it from the response (syntax: header var) ๐--check-static,--static-checkโ checks for static files in the specified directory ๐--check-static-docrootโ checks for static files in the requestedDOCUMENT_ROOT๐--static-mapโ maps a mountpoint to a static directory (or file) ๐บ๏ธ--static-map2โ like--static-mapbut completely appends the requested resource to the docroot, periodt ๐๏ธ--static-skip-extโ skips the specified extension from static file checks ๐--static-indexโ searches for the specified file if a directory is requested ๐--static-safeโ skips security checks if the file is under the specified path ๐ก๏ธ--static-cache-pathsโ puts resolved paths in the uWSGI cache for the specified amount of seconds โณ--static-cache-paths-nameโ uses the specified cache for static paths ๐ท๏ธ--mimefile,--mime-fileโ sets the mime types file path (default/etc/mime.types) ๐--static-expires-typeโ sets theExpiresheader based on content type ๐--static-expires-type-mtimeโ sets theExpiresheader based on content type and file mtime ๐ฐ๏ธ--static-expiresโ sets theExpiresheader based on filename regexp ๐๏ธ--static-expires-mtimeโ sets theExpiresheader based on filename regexp and file mtime โฒ๏ธ--static-expires-uriโ sets theExpiresheader based onREQUEST_URIregexp ๐--static-expires-uri-mtimeโ sets theExpiresheader based onREQUEST_URIregexp and file mtime ๐--static-expires-path-infoโ sets theExpiresheader based onPATH_INFOregexp ๐ค๏ธ--static-expires-path-info-mtimeโ sets theExpiresheader based onPATH_INFOregexp and file mtime โฑ๏ธ--static-gzipโ if the supplied regexp matches the static file translation, it will search for a gzip version ๐๏ธ--static-gzip-allโ checks for a gzip version of all requested static files, all of them ๐ฏ--static-gzip-dir,--static-gzip-prefixโ checks for a gzip version of all requested static files in the specified dir/prefix ๐--static-gzip-ext,--static-gzip-suffixโ checks for a gzip version of all requested static files with the specified ext/suffix ๐--honour-rangeโ enables support for the HTTPRangeheader ๐--offload-threads,--offload-threadโ sets the number of offload threads to spawn (per-worker, default0) ๐งต--file-serve-mode,--fileserve-modeโ sets the static file serving mode ๐ฅ๏ธ--disable-sendfileโ disablessendfile()and relies on boringread()/write()๐ด--check-cacheโ checks for response data in the specified cache (empty for 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) ๐--modeโ sets 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 ๐ซ--vacuumโ tries to remove all of the generated file/sockets ๐งน--file-writeโ writes the specified content to the specified file (syntax:file=value) before privileges drop โ๏ธ--cgroupโ puts the processes in the specified cgroup ๐จโ๐ฉโ๐งโ๐ฆ--cgroup-optโ sets a value in the specified cgroup option โ๏ธ--cgroup-dir-modeโ sets permission for cgroup directory (default is700) ๐--namespace,--nsโ runs in a new namespace under the specified rootfs ๐ช--namespace-keep-mountโ keeps the specified mountpoint in your namespace ๐--namespace-net,--ns-netโ adds a network namespace ๐--enable-proxy-protocolโ enables PROXY1 protocol support (only for http parsers) ๐--reuse-portโ enablesREUSE_PORTflag on the socket (BSD only) ๐--tcp-fast-open,--tcp-fastopenโ enablesTCP_FASTOPENflag on TCP sockets with the specified qlen value ๐--tcp-fast-open-client,--tcp-fastopen-clientโ usessendto(..., MSG_FASTOPEN, ...)instead ofconnect()if supported ๐ก--zergโ attaches to a zerg server ๐พ--zerg-fallbackโ falls back to normal sockets if the zerg server is not available ๐ณ๏ธ--zerg-serverโ enables the zerg server on the specified UNIX socket ๐--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,--cron-legionโ adds a cron task runnable only when the instance is a lord of the specified legion ๐--unique-legion-cron,--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,--loops-listโ lists enabled loop engines ๐--worker-execโ runs the specified command as a worker ๐--worker-exec2โ runs the specified command as a worker (afterpost_forkhook) ๐โโ๏ธ--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 (the command has to not go in background), when the daemon dies, the master dies too ๐--smart-attach-daemonโ attaches a command/daemon to the master process managed by a pidfile (the command has to daemonize) ๐ง--smart-attach-daemon2โ attaches a command/daemon to the master process managed by a pidfile (the command has to NOT daemonize) ๐ง ๐ซ--legion-attach-daemonโ same as--attach-daemonbut the daemon runs only on legion lord node ๐--legion-smart-attach-daemonโ same as--smart-attach-daemonbut the daemon runs only on legion lord node ๐๐ง--legion-smart-attach-daemon2โ same as--smart-attach-daemon2but the daemon runs only on legion lord node ๐๐ง ๐ซ--daemons-honour-stdinโ does not change the stdin of external daemons to/dev/null๐ค--attach-daemon2โ attach-daemon keyval variant (supports smart modes too) ๐๏ธ--plugins,--pluginโ loads uWSGI plugins ๐--need-plugins,--need-pluginโ loads uWSGI plugins (exit on error) ๐๐ฅ--plugins-dir,--plugin-dirโ adds a directory to the uWSGI plugin search path ๐--plugins-list,--plugin-listโ lists enabled plugins ๐--autoloadโ tries to automatically load plugins when unknown options are found ๐ค--dlopenโ blindly loads a shared library ๐ฒ--allowed-modifiersโ comma separated list of allowed modifiers โ--remap-modifierโ remaps 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 (fordata://usage) ๐--printโ simple print ๐จ๏ธ--iprintโ simple print (immediate version) ๐จ๏ธโก--exitโ forcesexit()of the instance ๐ช--cflagsโ reports uWSGI CFLAGS (useful for building external plugins) ๐ ๏ธ--dot-hโ dumps theuwsgi.hused for building the core (useful for building external plugins) ๐--config-pyโ dumps theuwsgiconfig.pyused for building the core (useful for building external plugins) ๐--build-pluginโ builds a uWSGI plugin for the current binary ๐๏ธ--versionโ prints uWSGI version ๐ท๏ธ--response-headers-limitโ sets response header maximum size (default:64k) ๐
and that's a wrap, bestie! this was uwsgi_python3 2.0.31-6 from July 2026 โ go slay some uWSGI configs, mwah ๐โจ
๐ฆ where this page comes from
- ubuntu stonking: uwsgi-plugin-python3 2.0.31+6+0.0.3 ยท GPL-3.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms