<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [

<!-- Process this file with docbook-to-man to generate an nroff manual
page: `docbook-to-man manpage.sgml > manpage.1'.  You may view
the manual page with: `docbook-to-man manpage.sgml | nroff -man |
less'.  A typical entry in a Makefile or Makefile.am is:

manpage.1: manpage.sgml
docbook-to-man $< > $@


The docbook-to-man binary is found in the docbook-to-man package.
Please remember that if you create the nroff version in one of the
debian/rules file targets (such as build), you will need to include
docbook-to-man in your Build-Depends control field.

-->

<!-- Fill in your name for FIRSTNAME and SURNAME. -->
<!ENTITY dhfirstname "<firstname>Michael</firstname>">
<!ENTITY dhsurname   "<surname>Fladischer</surname>">
<!-- Please adjust the date whenever revising the manpage. -->
<!ENTITY dhdate      "<date>21 October 2018</date>">
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are
allowed: see man(7), man(1). -->
<!ENTITY dhsection   "<manvolnum>1</manvolnum>">
<!ENTITY dhemail     "<email>fladi@debian.org</email>">
<!ENTITY dhusername  "fladi">
<!ENTITY dhucpackage "<refentrytitle>UVICORN</refentrytitle>">
<!ENTITY dhpackage   "uvicorn">

<!ENTITY debian      "<productname>Debian</productname>">
<!ENTITY gnu         "<acronym>GNU</acronym>">
<!ENTITY gpl         "&gnu; <acronym>GPL</acronym>">
]>

<refentry>
    <refentryinfo>
        <address>
            &dhemail;
        </address>
        <author>
            &dhfirstname;
            &dhsurname;
        </author>
        <copyright>
            <year>2018</year>
            <holder>&dhusername;</holder>
        </copyright>
        &dhdate;
    </refentryinfo>
    <refmeta>
        &dhucpackage;

        &dhsection;
    </refmeta>
    <refnamediv>
        <refname>&dhpackage;</refname>

        <refpurpose>ASGI server implementation</refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <cmdsynopsis>
            <command>&dhpackage;</command>
            <arg><option>--host <replaceable>HOST</replaceable></option></arg>
            <arg><option>--port <replaceable>PORT</replaceable></option></arg>
            <arg><option>--uds <replaceable>UNIX_SOCKET</replaceable></option></arg>
            <arg><option>--fd <replaceable>FILE_DESCRIPTOR</replaceable></option></arg>
            <arg><option>--log-level <replaceable>LOG_LEVEL</replaceable></option></arg>
            <arg><option>--no-access-log</option></arg>
            <arg><option>--debug</option></arg>
            <arg><option>--loop <replaceable>LOOP</replaceable></option></arg>
            <arg><option>--http <replaceable>HTTP_IMPLEMENTATION</replaceable></option></arg>
            <arg><option>--ws <replaceable>WEBSOCKET_IMPLEMENTATION</replaceable></option></arg>
            <arg><option>--wsgi</option></arg>
            <arg><option>--ping-interval <replaceable>PING_INTERVAL</replaceable></option></arg>
            <arg><option>--root-path <replaceable>PATH</replaceable></option></arg>
            <arg><option>--proxy-headers</option></arg>
            <arg><option>--limit-concurrency <replaceable>CONNECTIONS</replaceable></option></arg>
            <arg><option>--limit-max-requests <replaceable>REQUESTS</replaceable></option></arg>
            <arg><option>--timeout-keep-alive <replaceable>SECONDS</replaceable></option></arg>
            <arg>APP</arg>
        </cmdsynopsis>
    </refsynopsisdiv>
    <refsect1>
        <title>DESCRIPTION</title>

        <para>This manual page documents briefly the
            <command>&dhpackage;</command> command.</para>

        <para>This manual page was written for the &debian; distribution
            because the original program does not have a manual page.</para>

        <para>
            <command>&dhpackage;</command> is a program that provides an ASGI server implementation.
        </para>

    </refsect1>
    <refsect1>
        <title>OPTIONS</title>

        <para>This program follows the usual &gnu; command line syntax,
            with long options starting with two dashes (`-').  A summary of
            options is included below.</para>

        <variablelist>
            <varlistentry>
                <term>
                    <option>--host <replaceable class="parameter">HOST</replaceable></option>
                </term>
                <listitem>
                    <para>Bind socket to this host. Use --host 0.0.0.0 to make the application available on your local network. Default: '127.0.0.1'.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                    <option>--port <replaceable class="parameter">PORT</replaceable></option>
                </term>
                <listitem>
                    <para>Bind to a socket with this port. Default: 8000.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                    <option>--uds <replaceable class="parameter">UNIX_SOCKET</replaceable></option>
                </term>
                <listitem>
                    <para>Bind to a UNIX domain socket. Useful if you want to run Uvicorn behind a reverse proxy.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                    <option>--fd <replaceable class="parameter">FILE_DESCRIPTOR</replaceable></option>
                </term>
                <listitem>
                    <para>Bind to socket from this file descriptor. Useful if you want to run Uvicorn within a process manager.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                    <option>--debug</option>
                </term>
                <listitem>
                    <para>Enable debug mode. Provides error tracebacks in the browser, and enables auto-reloading.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                    <option>--log-level <replaceable class="parameter">LOG_LEVEL</replaceable></option>
                </term>
                <listitem>
                    <para>Set the log level. Options: 'critical', 'error', 'warning', 'info', 'debug'. Default: 'info'.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                    <option>--no-access-log</option>
                </term>
                <listitem>
                    <para>Disable access log only, without changing log level.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                    <option>--loop <replaceable class="parameter">LOOP</replaceable></option>
                </term>
                <listitem>
                    <para>Set the event loop implementation. The uvloop implementation provides greater performance, but is not compatible with Windows or PyPy.
                    Options: 'auto', 'asyncio', 'uvloop'. Default: 'auto'.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                    <option>--http <replaceable class="parameter">HTTP_IMPLEMENTATION</replaceable></option>
                </term>
                <listitem>
                    <para>Set the HTTP protocol implementation. The httptools implementation provides greater performance, but it not compatible with PyPy, and
                    requires compilation on Windows. Options: 'auto', 'h11', 'httptools'. Default: 'auto'.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                    <option>--ws <replaceable class="parameter">WEBSOCKET_IMPLEMENTATION</replaceable></option>
                </term>
                <listitem>
                    <para>Set the WebSockets protocol implementation. Either of the websockets and wsproto packages are supported. Use 'none' to deny all
                      websocket requests. Options: 'auto', 'none', 'websockets', 'wsproto'. Default: 'auto'.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                    <option>--wsgi</option>
                </term>
                <listitem>
                    <para>Use WSGI as the application interface rather than ASGI. Note that WSGI mode always disables WebSocket support, as it is not supported
                    by the WSGI interface.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                    <option>--root-path <replaceable class="parameter">PATH</replaceable></option>
                </term>
                <listitem>
                    <para>Set the ASGI root_path for applications submounted below a given URL path.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                    <option>--proxy-headers</option>
                </term>
                <listitem>
                    <para>Use the X-Forwarded-Proto and X-Forwarded-For headers to populate remote scheme/address info.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                  <option>--limit-concurrency <replaceable class="parameter">CONNECTIONS</replaceable></option>
                </term>
                <listitem>
                    <para>Maximum number of concurrent connections or tasks to allow, before issuing HTTP 503 responses. Useful for ensuring known memory usage
                    patterns even under over-resourced loads.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                  <option>--limit-max-requests <replaceable class="parameter">REQUESTS</replaceable></option>
                </term>
                <listitem>
                    <para>Maximum number of requests to service before terminating the process. Useful when running together with a process manager, for
                      preventing memory leaks from impacting long-running processes.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>
                  <option>--timeout-keep-alive <replaceable class="parameter">SECONDS</replaceable></option>
                </term>
                <listitem>
                    <para>Close Keep-Alive connections if no new data is received within this timeout. Default: 5.</para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsect1>
    <refsect1>
        <title>ARGUMENTS</title>
        <variablelist>
            <varlistentry>
                <term>APP</term>
                <listitem>
                  <para>The ASGI application to run, in the format "module:attribute".</para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsect1>
    <refsect1>
        <title>AUTHOR</title>

        <para>This manual page was written by &dhusername; &dhemail; for
            the &debian; system (and may be used by others).  Permission is
            granted to copy, distribute and/or modify this document under
            the terms of the &gnu; General Public License, Version 2 any
            later version published by the Free Software Foundation.
        </para>
        <para>
            On Debian systems, the complete text of the GNU General Public
            License can be found in /usr/share/common-licenses/GPL.
        </para>

    </refsect1>
</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:2
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
