From 73adc7cb298e2339d7de14bd7b07502ac826f843 Mon Sep 17 00:00:00 2001 From: Benoit Chesneau Date: Thu, 22 Jan 2026 23:27:32 +0100 Subject: [PATCH] docs: Add collapsible TOC for settings reference - Change settings headers to h2 sections / h3 settings for TOC visibility - Enable toc.integrate to show TOC in left sidebar - Add JavaScript for collapsible section toggles on settings page --- .../assets/javascripts/toc-collapse.js | 79 +++++++ docs/content/reference/settings.md | 216 +++++++++--------- mkdocs.yml | 4 + scripts/build_settings_doc.py | 4 +- 4 files changed, 193 insertions(+), 110 deletions(-) create mode 100644 docs/content/assets/javascripts/toc-collapse.js diff --git a/docs/content/assets/javascripts/toc-collapse.js b/docs/content/assets/javascripts/toc-collapse.js new file mode 100644 index 00000000..6b2dc6f9 --- /dev/null +++ b/docs/content/assets/javascripts/toc-collapse.js @@ -0,0 +1,79 @@ +// Collapsible TOC for settings page +(function() { + function initCollapsibleTOC() { + // Only apply to pages with many TOC items (like settings) + var tocNav = document.querySelector('.md-nav--secondary'); + if (!tocNav) return; + + // Skip if already initialized + if (tocNav.dataset.tocCollapse === 'true') return; + tocNav.dataset.tocCollapse = 'true'; + + var tocItems = tocNav.querySelectorAll('.md-nav__item'); + if (tocItems.length < 20) return; + + // Find all top-level TOC items that have nested lists + var topList = tocNav.querySelector('.md-nav__list'); + if (!topList) return; + + var sections = topList.children; + + for (var i = 0; i < sections.length; i++) { + (function(section) { + var nestedNav = section.querySelector('.md-nav'); + if (!nestedNav) return; + + var link = section.querySelector('.md-nav__link'); + if (!link) return; + + // Skip if already has toggle + if (link.querySelector('.toc-toggle')) return; + + // Collapse by default + nestedNav.style.display = 'none'; + + // Create toggle button + var toggle = document.createElement('span'); + toggle.className = 'toc-toggle'; + toggle.innerHTML = '+'; + toggle.style.float = 'right'; + toggle.style.marginRight = '0.5rem'; + toggle.style.fontWeight = 'bold'; + toggle.style.cursor = 'pointer'; + toggle.style.userSelect = 'none'; + link.appendChild(toggle); + + // Toggle function for this specific section + function toggleSection(e) { + if (e) { + e.preventDefault(); + e.stopPropagation(); + } + + if (nestedNav.style.display === 'none') { + nestedNav.style.display = 'block'; + toggle.innerHTML = '−'; + } else { + nestedNav.style.display = 'none'; + toggle.innerHTML = '+'; + } + } + + // Click on toggle button + toggle.onclick = toggleSection; + })(sections[i]); + } + } + + // Run on DOM ready + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', initCollapsibleTOC); + } else { + initCollapsibleTOC(); + } + + // Re-run on instant navigation (MkDocs Material) + if (typeof document$ !== 'undefined') { + document$.subscribe(initCollapsibleTOC); + } +})(); diff --git a/docs/content/reference/settings.md b/docs/content/reference/settings.md index d320fcf4..e24227bf 100644 --- a/docs/content/reference/settings.md +++ b/docs/content/reference/settings.md @@ -18,9 +18,9 @@ regenerated during every documentation build. -# Config File +## Config File -## `config` +### `config` **Command line:** `-c CONFIG`, `--config CONFIG` @@ -40,7 +40,7 @@ directory where gunicorn is being run. Loading the config from a Python module requires the ``python:`` prefix. -## `wsgi_app` +### `wsgi_app` **Default:** `None` @@ -48,9 +48,9 @@ A WSGI application path in pattern ``$(MODULE_NAME):$(VARIABLE_NAME)``. !!! info "Added in 20.1.0" -# Debugging +## Debugging -## `reload` +### `reload` **Command line:** `--reload` @@ -73,7 +73,7 @@ because it consumes less system resources. In order to use the inotify reloader, you must have the ``inotify`` package installed. -## `reload_engine` +### `reload_engine` **Command line:** `--reload-engine STRING` @@ -89,7 +89,7 @@ Valid engines are: !!! info "Added in 19.7" -## `reload_extra_files` +### `reload_extra_files` **Command line:** `--reload-extra-file FILES` @@ -100,7 +100,7 @@ Extends [reload](#reload) option to also watch and reload on additional files !!! info "Added in 19.8" -## `spew` +### `spew` **Command line:** `--spew` @@ -110,7 +110,7 @@ Install a trace function that spews every line executed by the server. This is the nuclear option. -## `check_config` +### `check_config` **Command line:** `--check-config` @@ -119,7 +119,7 @@ This is the nuclear option. Check the configuration and exit. The exit status is 0 if the configuration is correct, and 1 if the configuration is incorrect. -## `print_config` +### `print_config` **Command line:** `--print-config` @@ -127,9 +127,9 @@ configuration is correct, and 1 if the configuration is incorrect. Print the configuration settings as fully resolved. Implies [check-config](#check_config). -# Logging +## Logging -## `accesslog` +### `accesslog` **Command line:** `--access-logfile FILE` @@ -139,7 +139,7 @@ The Access log file to write to. ``'-'`` means log to stdout. -## `disable_redirect_access_to_syslog` +### `disable_redirect_access_to_syslog` **Command line:** `--disable-redirect-access-to-syslog` @@ -149,7 +149,7 @@ Disable redirect access logs to syslog. !!! info "Added in 19.8" -## `access_log_format` +### `access_log_format` **Command line:** `--access-logformat STRING` @@ -189,7 +189,7 @@ Use lowercase for header and environment variable names, and put %({x-forwarded-for}i)s -## `errorlog` +### `errorlog` **Command line:** `--error-logfile FILE`, `--log-file FILE` @@ -202,7 +202,7 @@ Using ``'-'`` for FILE makes gunicorn log to stderr. !!! info "Changed in 19.2" Log to stderr by default. -## `loglevel` +### `loglevel` **Command line:** `--log-level LEVEL` @@ -218,7 +218,7 @@ Valid level names are: * ``'error'`` * ``'critical'`` -## `capture_output` +### `capture_output` **Command line:** `--capture-output` @@ -228,7 +228,7 @@ Redirect stdout/stderr to specified file in [errorlog](#errorlog). !!! info "Added in 19.6" -## `logger_class` +### `logger_class` **Command line:** `--logger-class STRING` @@ -242,7 +242,7 @@ normal usages in logging. It provides error and access logging. You can provide your own logger by giving Gunicorn a Python path to a class that quacks like ``gunicorn.glogging.Logger``. -## `logconfig` +### `logconfig` **Command line:** `--log-config FILE` @@ -252,7 +252,7 @@ The log config file to use. Gunicorn uses the standard Python logging module's Configuration file format. -## `logconfig_dict` +### `logconfig_dict` **Default:** `{}` @@ -269,7 +269,7 @@ which can be found at ``gunicorn.glogging.CONFIG_DEFAULTS``. !!! info "Added in 19.8" -## `logconfig_json` +### `logconfig_json` **Command line:** `--log-config-json FILE` @@ -281,7 +281,7 @@ Format: https://docs.python.org/3/library/logging.config.html#logging.config.jso !!! info "Added in 20.0" -## `syslog_addr` +### `syslog_addr` **Command line:** `--log-syslog-to SYSLOG_ADDR` @@ -297,7 +297,7 @@ Address is a string of the form: * ``udp://HOST:PORT`` : for UDP sockets * ``tcp://HOST:PORT`` : for TCP sockets -## `syslog` +### `syslog` **Command line:** `--log-syslog` @@ -309,7 +309,7 @@ Send *Gunicorn* logs to syslog. You can now disable sending access logs by using the disable-redirect-access-to-syslog setting. -## `syslog_prefix` +### `syslog_prefix` **Command line:** `--log-syslog-prefix SYSLOG_PREFIX` @@ -320,7 +320,7 @@ Makes Gunicorn use the parameter as program-name in the syslog entries. All entries will be prefixed by ``gunicorn.``. By default the program name is the name of the process. -## `syslog_facility` +### `syslog_facility` **Command line:** `--log-syslog-facility SYSLOG_FACILITY` @@ -328,7 +328,7 @@ program name is the name of the process. Syslog facility name -## `enable_stdio_inheritance` +### `enable_stdio_inheritance` **Command line:** `-R`, `--enable-stdio-inheritance` @@ -341,7 +341,7 @@ Enable inheritance for stdio file descriptors in daemon mode. Note: To disable the Python stdout buffering, you can to set the user environment variable ``PYTHONUNBUFFERED`` . -## `statsd_host` +### `statsd_host` **Command line:** `--statsd-host STATSD_ADDR` @@ -356,7 +356,7 @@ Address is a string of the form: !!! info "Added in 19.1" -## `dogstatsd_tags` +### `dogstatsd_tags` **Command line:** `--dogstatsd-tags DOGSTATSD_TAGS` @@ -367,7 +367,7 @@ statsd metrics. !!! info "Added in 20" -## `statsd_prefix` +### `statsd_prefix` **Command line:** `--statsd-prefix STATSD_PREFIX` @@ -378,9 +378,9 @@ if not provided). !!! info "Added in 19.2" -# Process Naming +## Process Naming -## `proc_name` +### `proc_name` **Command line:** `-n STRING`, `--name STRING` @@ -395,15 +395,15 @@ module. If not set, the *default_proc_name* setting will be used. -## `default_proc_name` +### `default_proc_name` **Default:** `'gunicorn'` Internal setting that is adjusted for each type of application. -# SSL +## SSL -## `keyfile` +### `keyfile` **Command line:** `--keyfile FILE` @@ -411,7 +411,7 @@ Internal setting that is adjusted for each type of application. SSL key file -## `certfile` +### `certfile` **Command line:** `--certfile FILE` @@ -419,7 +419,7 @@ SSL key file SSL certificate file -## `ssl_version` +### `ssl_version` **Command line:** `--ssl-version` @@ -457,7 +457,7 @@ TLS_SERVER Auto-negotiate the highest protocol version like TLS, The default value has been changed from ``ssl.PROTOCOL_SSLv23`` to ``ssl.PROTOCOL_TLS`` when Python >= 3.6 . -## `cert_reqs` +### `cert_reqs` **Command line:** `--cert-reqs` @@ -473,7 +473,7 @@ Whether client certificate is required (see stdlib ssl module's) `2` ssl.CERT_REQUIRED =========== =========================== -## `ca_certs` +### `ca_certs` **Command line:** `--ca-certs FILE` @@ -481,7 +481,7 @@ Whether client certificate is required (see stdlib ssl module's) CA certificates file -## `suppress_ragged_eofs` +### `suppress_ragged_eofs` **Command line:** `--suppress-ragged-eofs` @@ -489,7 +489,7 @@ CA certificates file Suppress ragged EOFs (see stdlib ssl module's) -## `do_handshake_on_connect` +### `do_handshake_on_connect` **Command line:** `--do-handshake-on-connect` @@ -497,7 +497,7 @@ Suppress ragged EOFs (see stdlib ssl module's) Whether to perform SSL handshake on socket connect (see stdlib ssl module's) -## `ciphers` +### `ciphers` **Command line:** `--ciphers` @@ -518,9 +518,9 @@ See the `OpenSSL Cipher List Format Documentation `_ for details on the format of an OpenSSL cipher list. -# Security +## Security -## `limit_request_line` +### `limit_request_line` **Command line:** `--limit-request-line INT` @@ -539,7 +539,7 @@ from 0 (unlimited) to 8190. This parameter can be used to prevent any DDOS attack. -## `limit_request_fields` +### `limit_request_fields` **Command line:** `--limit-request-fields INT` @@ -552,7 +552,7 @@ prevent DDOS attack. Used with the *limit_request_field_size* it allows more safety. By default this value is 100 and can't be larger than 32768. -## `limit_request_field_size` +### `limit_request_field_size` **Command line:** `--limit-request-field_size INT` @@ -567,9 +567,9 @@ header field sizes. Setting this parameter to a very high or unlimited value can open up for DDOS attacks. -# Server Hooks +## Server Hooks -## `on_starting` +### `on_starting` **Default:** @@ -582,7 +582,7 @@ Called just before the master process is initialized. The callable needs to accept a single instance variable for the Arbiter. -## `on_reload` +### `on_reload` **Default:** @@ -595,7 +595,7 @@ Called to recycle workers during a reload via SIGHUP. The callable needs to accept a single instance variable for the Arbiter. -## `when_ready` +### `when_ready` **Default:** @@ -608,7 +608,7 @@ Called just after the server is started. The callable needs to accept a single instance variable for the Arbiter. -## `pre_fork` +### `pre_fork` **Default:** @@ -622,7 +622,7 @@ Called just before a worker is forked. The callable needs to accept two instance variables for the Arbiter and new Worker. -## `post_fork` +### `post_fork` **Default:** @@ -636,7 +636,7 @@ Called just after a worker has been forked. The callable needs to accept two instance variables for the Arbiter and new Worker. -## `post_worker_init` +### `post_worker_init` **Default:** @@ -650,7 +650,7 @@ Called just after a worker has initialized the application. The callable needs to accept one instance variable for the initialized Worker. -## `worker_int` +### `worker_int` **Default:** @@ -664,7 +664,7 @@ Called just after a worker exited on SIGINT or SIGQUIT. The callable needs to accept one instance variable for the initialized Worker. -## `worker_abort` +### `worker_abort` **Default:** @@ -680,7 +680,7 @@ This call generally happens on timeout. The callable needs to accept one instance variable for the initialized Worker. -## `pre_exec` +### `pre_exec` **Default:** @@ -693,7 +693,7 @@ Called just before a new master process is forked. The callable needs to accept a single instance variable for the Arbiter. -## `pre_request` +### `pre_request` **Default:** @@ -707,7 +707,7 @@ Called just before a worker processes the request. The callable needs to accept two instance variables for the Worker and the Request. -## `post_request` +### `post_request` **Default:** @@ -721,7 +721,7 @@ Called after a worker processes the request. The callable needs to accept two instance variables for the Worker and the Request. -## `child_exit` +### `child_exit` **Default:** @@ -737,7 +737,7 @@ the just-exited Worker. !!! info "Added in 19.7" -## `worker_exit` +### `worker_exit` **Default:** @@ -751,7 +751,7 @@ Called just after a worker has been exited, in the worker process. The callable needs to accept two instance variables for the Arbiter and the just-exited Worker. -## `nworkers_changed` +### `nworkers_changed` **Default:** @@ -768,7 +768,7 @@ two integers of number of workers after and before change. If the number of workers is set for the first time, *old_value* would be ``None``. -## `on_exit` +### `on_exit` **Default:** @@ -781,7 +781,7 @@ Called just before exiting Gunicorn. The callable needs to accept a single instance variable for the Arbiter. -## `ssl_context` +### `ssl_context` **Default:** @@ -812,9 +812,9 @@ def ssl_context(conf, default_ssl_context_factory): !!! info "Added in 21.0" -# Server Mechanics +## Server Mechanics -## `preload_app` +### `preload_app` **Command line:** `--preload` @@ -827,7 +827,7 @@ speed up server boot times. Although, if you defer application loading to each worker process, you can reload your application code easily by restarting workers. -## `sendfile` +### `sendfile` **Command line:** `--no-sendfile` @@ -847,7 +847,7 @@ to enable or disable its usage. !!! info "Changed in 19.6" added support for the ``SENDFILE`` environment variable -## `reuse_port` +### `reuse_port` **Command line:** `--reuse-port` @@ -857,7 +857,7 @@ Set the ``SO_REUSEPORT`` flag on the listening socket. !!! info "Added in 19.8" -## `chdir` +### `chdir` **Command line:** `--chdir` @@ -867,7 +867,7 @@ Set the ``SO_REUSEPORT`` flag on the listening socket. Change directory to specified directory before loading apps. -## `daemon` +### `daemon` **Command line:** `-D`, `--daemon` @@ -878,7 +878,7 @@ Daemonize the Gunicorn process. Detaches the server from the controlling terminal and enters the background. -## `raw_env` +### `raw_env` **Command line:** `-e ENV`, `--env ENV` @@ -900,7 +900,7 @@ Or in the configuration file: raw_env = ["FOO=1"] ``` -## `pidfile` +### `pidfile` **Command line:** `-p FILE`, `--pid FILE` @@ -910,7 +910,7 @@ A filename to use for the PID file. If not set, no PID file will be written. -## `worker_tmp_dir` +### `worker_tmp_dir` **Command line:** `--worker-tmp-dir DIR` @@ -928,7 +928,7 @@ If not set, the default temporary directory will be used. See [blocking-os-fchmod](#blocking_os_fchmod) for more detailed information and a solution for avoiding this problem. -## `user` +### `user` **Command line:** `-u USER`, `--user USER` @@ -942,7 +942,7 @@ A valid user id (as an integer) or the name of a user that can be retrieved with a call to ``pwd.getpwnam(value)`` or ``None`` to not change the worker process user. -## `group` +### `group` **Command line:** `-g GROUP`, `--group GROUP` @@ -956,7 +956,7 @@ A valid group id (as an integer) or the name of a user that can be retrieved with a call to ``grp.getgrnam(value)`` or ``None`` to not change the worker processes group. -## `umask` +### `umask` **Command line:** `-m INT`, `--umask INT` @@ -971,7 +971,7 @@ with ``int(value, 0)`` (``0`` means Python guesses the base, so values like ``0``, ``0xFF``, ``0022`` are valid for decimal, hex, and octal representations) -## `initgroups` +### `initgroups` **Command line:** `--initgroups` @@ -983,7 +983,7 @@ group id. !!! info "Added in 19.7" -## `tmp_upload_dir` +### `tmp_upload_dir` **Default:** `None` @@ -995,7 +995,7 @@ This path should be writable by the process permissions set for Gunicorn workers. If not specified, Gunicorn will choose a system generated temporary directory. -## `secure_scheme_headers` +### `secure_scheme_headers` **Default:** `{'X-FORWARDED-PROTOCOL': 'ssl', 'X-FORWARDED-PROTO': 'https', 'X-FORWARDED-SSL': 'on'}` @@ -1018,7 +1018,7 @@ when handling HTTPS requests. It is important that your front-end proxy configuration ensures that the headers defined here can not be passed directly from the client. -## `forwarded_allow_ips` +### `forwarded_allow_ips` **Command line:** `--forwarded-allow-ips STRING` @@ -1100,7 +1100,7 @@ variable. If it is not defined, the default is ``"127.0.0.1,::1"``. - ``InvalidSchemeHeaders()`` raised - IP address allowed, but the two secure headers disagreed on if HTTPS was used -## `pythonpath` +### `pythonpath` **Command line:** `--pythonpath STRING` @@ -1111,7 +1111,7 @@ A comma-separated list of directories to add to the Python path. e.g. ``'/home/djangoprojects/myproject,/home/python/mylibrary'``. -## `paste` +### `paste` **Command line:** `--paste STRING`, `--paster STRING` @@ -1124,7 +1124,7 @@ e.g. ``production.ini#admin``. At this time, using alternate server blocks is not supported. Use the command line arguments to control server configuration instead. -## `proxy_protocol` +### `proxy_protocol` **Command line:** `--proxy-protocol` @@ -1146,7 +1146,7 @@ Example for stunnel config:: cert = /etc/ssl/certs/stunnel.pem key = /etc/ssl/certs/stunnel.key -## `proxy_allow_ips` +### `proxy_allow_ips` **Command line:** `--proxy-allow-from` @@ -1163,7 +1163,7 @@ authorized front-ends can access Gunicorn. This option does not affect UNIX socket connections. Connections not associated with an IP address are treated as allowed, unconditionally. -## `protocol` +### `protocol` **Command line:** `--protocol STRING` @@ -1185,7 +1185,7 @@ nginx using the uwsgi_pass directive:: include uwsgi_params; } -## `uwsgi_allow_ips` +### `uwsgi_allow_ips` **Command line:** `--uwsgi-allow-from` @@ -1202,7 +1202,7 @@ access Gunicorn. This option does not affect UNIX socket connections. Connections not associated with an IP address are treated as allowed, unconditionally. -## `raw_paste_global_conf` +### `raw_paste_global_conf` **Command line:** `--paste-global CONF` @@ -1218,7 +1218,7 @@ The variables are passed to the PasteDeploy entrypoint. Example:: !!! info "Added in 19.7" -## `permit_obsolete_folding` +### `permit_obsolete_folding` **Command line:** `--permit-obsolete-folding` @@ -1235,7 +1235,7 @@ change in a future version, or it may be removed altogether. !!! info "Added in 23.0.0" -## `strip_header_spaces` +### `strip_header_spaces` **Command line:** `--strip-header-spaces` @@ -1250,7 +1250,7 @@ Use with care and only if necessary. Deprecated; scheduled for removal in 25.0.0 !!! info "Added in 20.0.1" -## `permit_unconventional_http_method` +### `permit_unconventional_http_method` **Command line:** `--permit-unconventional-http-method` @@ -1272,7 +1272,7 @@ Use with care and only if necessary. Temporary; scheduled for removal in 24.0.0 !!! info "Added in 22.0.0" -## `permit_unconventional_http_version` +### `permit_unconventional_http_version` **Command line:** `--permit-unconventional-http-version` @@ -1289,7 +1289,7 @@ change in a future version, or it may be removed altogether. !!! info "Added in 22.0.0" -## `casefold_http_method` +### `casefold_http_method` **Command line:** `--casefold-http-method` @@ -1305,7 +1305,7 @@ Use with care and only if necessary. Deprecated; scheduled for removal in 24.0.0 !!! info "Added in 22.0.0" -## `forwarder_headers` +### `forwarder_headers` **Command line:** `--forwarder-headers` @@ -1322,7 +1322,7 @@ and ``REMOTE_USER``. It is important that your front-end proxy configuration ensures that the headers defined here can not be passed directly from the client. -## `header_map` +### `header_map` **Command line:** `--header-map` @@ -1349,7 +1349,7 @@ on a proxy in front of Gunicorn. !!! info "Added in 22.0.0" -## `root_path` +### `root_path` **Command line:** `--root-path STRING` @@ -1366,9 +1366,9 @@ this to ``/api``. !!! info "Added in 24.0.0" -# Server Socket +## Server Socket -## `bind` +### `bind` **Command line:** `-b ADDRESS`, `--bind ADDRESS` @@ -1393,7 +1393,7 @@ If the ``PORT`` environment variable is defined, the default is ``['0.0.0.0:$PORT']``. If it is not defined, the default is ``['127.0.0.1:8000']``. -## `backlog` +### `backlog` **Command line:** `--backlog INT` @@ -1408,9 +1408,9 @@ load. Must be a positive integer. Generally set in the 64-2048 range. -# Worker Processes +## Worker Processes -## `workers` +### `workers` **Command line:** `-w INT`, `--workers INT` @@ -1426,7 +1426,7 @@ By default, the value of the ``WEB_CONCURRENCY`` environment variable, which is set by some Platform-as-a-Service providers such as Heroku. If it is not defined, the default is ``1``. -## `worker_class` +### `worker_class` **Command line:** `-k STRING`, `--worker-class STRING` @@ -1456,7 +1456,7 @@ Python path to a subclass of ``gunicorn.workers.base.Worker``. This alternative syntax will load the gevent class: ``gunicorn.workers.ggevent.GeventWorker``. -## `threads` +### `threads` **Command line:** `--threads INT` @@ -1479,7 +1479,7 @@ This setting only affects the Gthread worker type. setting to more than 1, the ``gthread`` worker type will be used instead. -## `worker_connections` +### `worker_connections` **Command line:** `--worker-connections INT` @@ -1489,7 +1489,7 @@ The maximum number of simultaneous clients. This setting only affects the ``gthread``, ``eventlet`` and ``gevent`` worker types. -## `max_requests` +### `max_requests` **Command line:** `--max-requests INT` @@ -1504,7 +1504,7 @@ to help limit the damage of memory leaks. If this is set to zero (the default) then the automatic worker restarts are disabled. -## `max_requests_jitter` +### `max_requests_jitter` **Command line:** `--max-requests-jitter INT` @@ -1518,7 +1518,7 @@ restarts to avoid all workers restarting at the same time. !!! info "Added in 19.2" -## `timeout` +### `timeout` **Command line:** `-t INT`, `--timeout INT` @@ -1535,7 +1535,7 @@ For the non sync workers it just means that the worker process is still communicating and is not tied to the length of time required to handle a single request. -## `graceful_timeout` +### `graceful_timeout` **Command line:** `--graceful-timeout INT` @@ -1547,7 +1547,7 @@ After receiving a restart signal, workers have this much time to finish serving requests. Workers still alive after the timeout (starting from the receipt of the restart signal) are force killed. -## `keepalive` +### `keepalive` **Command line:** `--keep-alive INT` @@ -1564,7 +1564,7 @@ set this to a higher value. ``sync`` worker does not support persistent connections and will ignore this option. -## `asgi_loop` +### `asgi_loop` **Command line:** `--asgi-loop STRING` @@ -1583,7 +1583,7 @@ installing the uvloop package. !!! info "Added in 24.0.0" -## `asgi_lifespan` +### `asgi_lifespan` **Command line:** `--asgi-lifespan STRING` diff --git a/mkdocs.yml b/mkdocs.yml index 955c2079..3ee153fb 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -60,6 +60,7 @@ theme: - search.highlight - search.suggest - toc.follow + - toc.integrate plugins: - search @@ -95,6 +96,9 @@ extra_css: - styles/overrides.css - assets/stylesheets/home.css +extra_javascript: + - assets/javascripts/toc-collapse.js + extra: social: - icon: fontawesome/brands/github diff --git a/scripts/build_settings_doc.py b/scripts/build_settings_doc.py index eb370f09..75174def 100644 --- a/scripts/build_settings_doc.py +++ b/scripts/build_settings_doc.py @@ -189,7 +189,7 @@ def _convert_desc(desc: str) -> str: def _format_setting(setting: guncfg.Setting) -> str: - lines: list[str] = [f"## `{setting.name}`", ""] + lines: list[str] = [f"### `{setting.name}`", ""] cli = _format_cli(setting) if cli: @@ -220,7 +220,7 @@ def render_settings() -> str: for setting in known_settings: if setting.section != current_section: current_section = setting.section - sections.append(f"# {current_section}\n") + sections.append(f"## {current_section}\n") sections.append(_format_setting(setting)) return "\n".join(sections).strip() + "\n"