CINXE.COM

Configuring gevent - gevent 24.11.2.dev0 documentation

<!doctype html> <html class="no-js" lang="en" data-content_root="./"> <head><meta charset="utf-8"/> <meta name="viewport" content="width=device-width,initial-scale=1"/> <meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="search.html" /><link rel="next" title="API reference" href="api/index.html" /><link rel="prev" title="Event Loop Implementations: libuv and libev" href="loop_impls.html" /> <!-- Generated with Sphinx 8.1.3 and Furo 2024.08.06 --> <title>Configuring gevent - gevent 24.11.2.dev0 documentation</title> <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a3258c64" /> <link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=354aac6f" /> <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=302659d7" /> <link rel="stylesheet" type="text/css" href="_static/custom.css?v=e405f49d" /> <style> body { --color-code-background: #eeeedd; --color-code-foreground: black; --color-brand-primary: #7c9a5e; --color-brand-content: #7c9a5e; --color-foreground-border: #b7d897; --font-stack: "SF Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"; --font-stack--monospace: "JetBrainsMono", "JetBrains Mono", "JetBrains Mono Regular", "JetBrainsMono-Regular", ui-monospace, profont, monospace; } @media not print { body[data-theme="dark"] { --color-code-background: #202020; --color-code-foreground: #d0d0d0; } @media (prefers-color-scheme: dark) { body:not([data-theme="light"]) { --color-code-background: #202020; --color-code-foreground: #d0d0d0; } } } </style><script async type="text/javascript" src="/_/static/javascript/readthedocs-addons.js"></script><meta name="readthedocs-project-slug" content="python-gevent" /><meta name="readthedocs-version-slug" content="latest" /><meta name="readthedocs-resolver-filename" content="/configuration.html" /><meta name="readthedocs-http-status" content="200" /></head> <body> <script> document.body.dataset.theme = localStorage.getItem("theme") || "auto"; </script> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <symbol id="svg-toc" viewBox="0 0 24 24"> <title>Contents</title> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024"> <path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/> </svg> </symbol> <symbol id="svg-menu" viewBox="0 0 24 24"> <title>Menu</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu"> <line x1="3" y1="12" x2="21" y2="12"></line> <line x1="3" y1="6" x2="21" y2="6"></line> <line x1="3" y1="18" x2="21" y2="18"></line> </svg> </symbol> <symbol id="svg-arrow-right" viewBox="0 0 24 24"> <title>Expand</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </symbol> <symbol id="svg-sun" viewBox="0 0 24 24"> <title>Light mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun"> <circle cx="12" cy="12" r="5"></circle> <line x1="12" y1="1" x2="12" y2="3"></line> <line x1="12" y1="21" x2="12" y2="23"></line> <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> <line x1="1" y1="12" x2="3" y2="12"></line> <line x1="21" y1="12" x2="23" y2="12"></line> <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> </svg> </symbol> <symbol id="svg-moon" viewBox="0 0 24 24"> <title>Dark mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon"> <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" /> </svg> </symbol> <symbol id="svg-sun-with-moon" viewBox="0 0 24 24"> <title>Auto light/dark, in light mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-custom-derived-from-feather-sun-and-tabler-moon"> <path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/> <line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/> <line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/> <line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/> <line x1="19" y1="14.05" x2="20.414" y2="15.464"/> <line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/> <line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/> <line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/> <line x1="19" y1="5.05" x2="20.414" y2="3.636"/> <circle cx="14.5" cy="9.55" r="3.6"/> </svg> </symbol> <symbol id="svg-moon-with-sun" viewBox="0 0 24 24"> <title>Auto light/dark, in dark mode</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-custom-derived-from-feather-sun-and-tabler-moon"> <path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/> <line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/> <line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/> <line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/> <line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/> <line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/> <line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/> <line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/> <line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/> <circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/> </svg> </symbol> <symbol id="svg-pencil" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code"> <path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" /> <path d="M13.5 6.5l4 4" /> <path d="M20 21l2 -2l-2 -2" /> <path d="M17 17l-2 2l2 2" /> </svg> </symbol> <symbol id="svg-eye" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code"> <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" /> <path d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" /> <path d="M20 21l2 -2l-2 -2" /> <path d="M17 17l-2 2l2 2" /> </svg> </symbol> </svg> <input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation"> <input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc"> <label class="overlay sidebar-overlay" for="__navigation"> <div class="visually-hidden">Hide navigation sidebar</div> </label> <label class="overlay toc-overlay" for="__toc"> <div class="visually-hidden">Hide table of contents sidebar</div> </label> <a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a> <div class="page"> <header class="mobile-header"> <div class="header-left"> <label class="nav-overlay-icon" for="__navigation"> <div class="visually-hidden">Toggle site navigation sidebar</div> <i class="icon"><svg><use href="#svg-menu"></use></svg></i> </label> </div> <div class="header-center"> <a href="contents.html"><div class="brand">gevent 24.11.2.dev0 documentation</div></a> </div> <div class="header-right"> <div class="theme-toggle-container theme-toggle-header"> <button class="theme-toggle"> <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg> <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg> <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> </button> </div> <label class="toc-overlay-icon toc-header-icon" for="__toc"> <div class="visually-hidden">Toggle table of contents sidebar</div> <i class="icon"><svg><use href="#svg-toc"></use></svg></i> </label> </div> </header> <aside class="sidebar-drawer"> <div class="sidebar-container"> <div class="sidebar-sticky"><a class="sidebar-brand" href="contents.html"> <div class="sidebar-logo-container"> <img class="sidebar-logo" src="_static/5564530.png" alt="Logo"/> </div> </a><form class="sidebar-search-container" method="get" action="search.html" role="search"> <input class="sidebar-search" placeholder="Search" name="q" aria-label="Search"> <input type="hidden" name="check_keywords" value="yes"> <input type="hidden" name="area" value="default"> </form> <div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree"> <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="install.html">Installation and Requirements</a></li> <li class="toctree-l1 has-children"><a class="reference internal" href="changelog.html">Changelog</a><input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><div class="visually-hidden">Toggle navigation of Changelog</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2"><a class="reference internal" href="changelog_1_5.html">Changes for 1.5</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog_1_4.html">Changes for 1.4</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog_1_3.html">Changes for 1.3</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog_1_2.html">Changes for 1.2</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog_1_1.html">Changes for 1.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog_1_0.html">Changes for 1.0</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog_pre.html">Changes before gevent 1.0</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="api/gevent.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent</span></code> – common functions</a></li> <li class="toctree-l1"><a class="reference internal" href="api/gevent.greenlet.html">Greenlet Objects</a></li> <li class="toctree-l1"><a class="reference internal" href="servers.html">Implementing servers</a></li> <li class="toctree-l1 has-children"><a class="reference internal" href="dns.html">Name Resolution (DNS)</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle navigation of Name Resolution (DNS)</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2"><a class="reference internal" href="api/gevent.resolver.thread.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.thread</span></code> – thread based hostname resolver</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.resolver.ares.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.ares</span></code> – c-ares based hostname resolver</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.resolver.dnspython.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.dnspython</span></code> – Pure Python hostname resolver</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.resolver.blocking.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.blocking</span></code> – Non-cooperative resolver</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="monitoring.html">Monitoring and Debugging gevent Applications</a></li> <li class="toctree-l1"><a class="reference internal" href="loop_impls.html">Event Loop Implementations: libuv and libev</a></li> <li class="toctree-l1 current current-page"><a class="current reference internal" href="#">Configuring gevent</a></li> </ul> <ul> <li class="toctree-l1 has-children"><a class="reference internal" href="api/index.html">API reference</a><input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><div class="visually-hidden">Toggle navigation of API reference</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2"><a class="reference internal" href="api/gevent.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent</span></code> – common functions</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.timeout.html">Cooperative Timeouts Using <code class="docutils literal notranslate"><span class="pre">gevent.Timeout</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.greenlet.html">Greenlet Objects</a></li> <li class="toctree-l2 has-children"><a class="reference internal" href="api/gevent.socket.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.socket</span></code> – Cooperative low-level networking interface</a><input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch" type="checkbox"/><label for="toctree-checkbox-4"><div class="visually-hidden">Toggle navigation of gevent.socket – Cooperative low-level networking interface</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="api/gevent._socket3.html">Python 3 interface</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.ssl.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.ssl</span></code> – Secure Sockets Layer (SSL/TLS) module</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.select.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.select</span></code> – Waiting for I/O completion</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.selectors.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.selectors</span></code> – High-level IO Multiplexing</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.event.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.event</span></code> – Notifications of multiple listeners</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.queue.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.queue</span></code> – Synchronized queues</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.local.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.local</span></code> – Greenlet-local objects</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.lock.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.lock</span></code> – Locking primitives</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.hub.html"><code class="docutils literal notranslate"><span class="pre">gevent.hub</span></code> - The Event Loop and the Hub</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.core.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.core</span></code> - (deprecated) event loop abstraction</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent</span></code> – common functions</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.backdoor.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.backdoor</span></code> – Interactive greenlet-based network console that can be used in any process</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.baseserver.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.baseserver</span></code> – Base class for implementing servers</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.builtins.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.builtins</span></code> – gevent friendly implementations of builtin functions</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.contextvars.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.contextvars</span></code> – Cooperative <code class="docutils literal notranslate"><span class="pre">contextvars</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.core.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.core</span></code> - (deprecated) event loop abstraction</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.event.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.event</span></code> – Notifications of multiple listeners</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.events.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.events</span></code> – Publish/subscribe event infrastructure</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.exceptions.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.exceptions</span></code> – Exceptions</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.fileobject.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.fileobject</span></code> – Wrappers to make file-like objects cooperative</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.hub.html"><code class="docutils literal notranslate"><span class="pre">gevent.hub</span></code> - The Event Loop and the Hub</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.local.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.local</span></code> – Greenlet-local objects</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.lock.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.lock</span></code> – Locking primitives</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.monkey.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.monkey</span></code> – Make the standard library cooperative</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.os.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.os</span></code> – Low-level operating system functions from <code class="xref py py-mod docutils literal notranslate"><span class="pre">os</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.pool.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.pool</span></code> – Managing greenlets in a group</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.pywsgi.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.pywsgi</span></code> – A pure-Python, gevent-friendly WSGI server</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.queue.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.queue</span></code> – Synchronized queues</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.resolver.ares.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.ares</span></code> – c-ares based hostname resolver</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.resolver.blocking.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.blocking</span></code> – Non-cooperative resolver</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.resolver.dnspython.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.dnspython</span></code> – Pure Python hostname resolver</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.resolver.thread.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.thread</span></code> – thread based hostname resolver</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.select.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.select</span></code> – Waiting for I/O completion</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.selectors.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.selectors</span></code> – High-level IO Multiplexing</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.server.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.server</span></code> – TCP/SSL server</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.signal.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.signal</span></code> – Cooperative implementation of special cases of <code class="xref py py-func docutils literal notranslate"><span class="pre">signal.signal()</span></code></a></li> <li class="toctree-l2 has-children"><a class="reference internal" href="api/gevent.socket.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.socket</span></code> – Cooperative low-level networking interface</a><input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" role="switch" type="checkbox"/><label for="toctree-checkbox-5"><div class="visually-hidden">Toggle navigation of gevent.socket – Cooperative low-level networking interface</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="api/gevent._socket3.html">Python 3 interface</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.ssl.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.ssl</span></code> – Secure Sockets Layer (SSL/TLS) module</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.subprocess.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.subprocess</span></code> – Cooperative <code class="docutils literal notranslate"><span class="pre">subprocess</span></code> module</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.thread.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.thread</span></code> – Implementation of the standard <code class="xref py py-mod docutils literal notranslate"><span class="pre">thread</span></code> module that spawns greenlets</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.threading.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.threading</span></code> – Implementation of the standard <code class="xref py py-mod docutils literal notranslate"><span class="pre">threading</span></code> using greenlets</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.threadpool.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.threadpool</span></code> - A pool of native threads</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.time.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.time</span></code> – Makes <em>sleep</em> gevent aware</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.util.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.util</span></code> – Low-level utilities</a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.ares.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.ares</span></code> – Backwards compatibility alias for <code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.resolver.cares</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="api/gevent.wsgi.html"><code class="docutils literal notranslate"><span class="pre">gevent.wsgi</span></code> – Historical note only; does not exist</a></li> <li class="toctree-l2 has-children"><a class="reference internal" href="examples/index.html">Examples</a><input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div class="visually-hidden">Toggle navigation of Examples</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="examples/concurrent_download.html">Example concurrent_download.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/dns_mass_resolve.html">Example dns_mass_resolve.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/echoserver.html">Example echoserver.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/geventsendfile.html">Example geventsendfile.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/portforwarder.html">Example portforwarder.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/processes.html">Example processes.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/psycopg2_pool.html">Example psycopg2_pool.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/threadpool.html">Example threadpool.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/udp_client.html">Example udp_client.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/udp_server.html">Example udp_server.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/unixsocket_client.html">Example unixsocket_client.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/unixsocket_server.html">Example unixsocket_server.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/webproxy.html">Example webproxy.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/webpy.html">Example webpy.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/wsgiserver.html">Example wsgiserver.py</a></li> <li class="toctree-l3"><a class="reference internal" href="examples/wsgiserver_ssl.html">Example wsgiserver_ssl.py</a></li> </ul> </li> </ul> </li> </ul> <ul> <li class="toctree-l1 has-children"><a class="reference internal" href="development/index.html">Development</a><input class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" role="switch" type="checkbox"/><label for="toctree-checkbox-7"><div class="visually-hidden">Toggle navigation of Development</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2"><a class="reference internal" href="development/getting_started.html">Getting Started</a></li> <li class="toctree-l2"><a class="reference internal" href="development/installing_from_source.html">Installing From Source</a></li> <li class="toctree-l2"><a class="reference internal" href="development/running_tests.html">Running Tests</a></li> <li class="toctree-l2"><a class="reference internal" href="development/ci.html">Continuous integration</a></li> <li class="toctree-l2"><a class="reference internal" href="development/release_process.html">Release Process</a></li> </ul> </li> </ul> <ul> <li class="toctree-l1"><a class="reference internal" href="success.html">Success stories</a></li> <li class="toctree-l1"><a class="reference internal" href="community.html">Community</a></li> <li class="toctree-l1 has-children"><a class="reference internal" href="older_releases.html">Information About Older Releases</a><input class="toctree-checkbox" id="toctree-checkbox-8" name="toctree-checkbox-8" role="switch" type="checkbox"/><label for="toctree-checkbox-8"><div class="visually-hidden">Toggle navigation of Information About Older Releases</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l2 has-children"><a class="reference internal" href="whatsnew_1_5.html">What’s new in gevent 1.5</a><input class="toctree-checkbox" id="toctree-checkbox-9" name="toctree-checkbox-9" role="switch" type="checkbox"/><label for="toctree-checkbox-9"><div class="visually-hidden">Toggle navigation of What’s new in gevent 1.5</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="changelog_1_5.html">Changes for 1.5</a></li> </ul> </li> <li class="toctree-l2 has-children"><a class="reference internal" href="whatsnew_1_4.html">What’s new in gevent 1.4</a><input class="toctree-checkbox" id="toctree-checkbox-10" name="toctree-checkbox-10" role="switch" type="checkbox"/><label for="toctree-checkbox-10"><div class="visually-hidden">Toggle navigation of What’s new in gevent 1.4</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="changelog_1_4.html">Changes for 1.4</a></li> </ul> </li> <li class="toctree-l2 has-children"><a class="reference internal" href="whatsnew_1_3.html">What’s new in gevent 1.3</a><input class="toctree-checkbox" id="toctree-checkbox-11" name="toctree-checkbox-11" role="switch" type="checkbox"/><label for="toctree-checkbox-11"><div class="visually-hidden">Toggle navigation of What’s new in gevent 1.3</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="changelog_1_3.html">Changes for 1.3</a></li> </ul> </li> <li class="toctree-l2 has-children"><a class="reference internal" href="whatsnew_1_2.html">What’s new in gevent 1.2</a><input class="toctree-checkbox" id="toctree-checkbox-12" name="toctree-checkbox-12" role="switch" type="checkbox"/><label for="toctree-checkbox-12"><div class="visually-hidden">Toggle navigation of What’s new in gevent 1.2</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="changelog_1_2.html">Changes for 1.2</a></li> </ul> </li> <li class="toctree-l2 has-children"><a class="reference internal" href="whatsnew_1_1.html">What’s new in gevent 1.1</a><input class="toctree-checkbox" id="toctree-checkbox-13" name="toctree-checkbox-13" role="switch" type="checkbox"/><label for="toctree-checkbox-13"><div class="visually-hidden">Toggle navigation of What’s new in gevent 1.1</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="changelog_1_1.html">Changes for 1.1</a></li> </ul> </li> <li class="toctree-l2 has-children"><a class="reference internal" href="whatsnew_1_0.html">What’s new in gevent 1.0</a><input class="toctree-checkbox" id="toctree-checkbox-14" name="toctree-checkbox-14" role="switch" type="checkbox"/><label for="toctree-checkbox-14"><div class="visually-hidden">Toggle navigation of What’s new in gevent 1.0</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul> <li class="toctree-l3"><a class="reference internal" href="changelog_1_0.html">Changes for 1.0</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="changelog_1_5.html">Changes for 1.5</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog_1_4.html">Changes for 1.4</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog_1_3.html">Changes for 1.3</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog_1_2.html">Changes for 1.2</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog_1_1.html">Changes for 1.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog_1_0.html">Changes for 1.0</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog_pre.html">Changes before gevent 1.0</a></li> </ul> </li> </ul> </div> </div> </div> </div> </aside> <div class="main"> <div class="content"> <div class="article-container"> <a href="#" class="back-to-top muted-link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path> </svg> <span>Back to top</span> </a> <div class="content-icon-container"> <div class="theme-toggle-container theme-toggle-content"> <button class="theme-toggle"> <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div> <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg> <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg> <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg> <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg> </button> </div> <label class="toc-overlay-icon toc-content-icon" for="__toc"> <div class="visually-hidden">Toggle table of contents sidebar</div> <i class="icon"><svg><use href="#svg-toc"></use></svg></i> </label> </div> <article role="main" id="furo-main-content"> <section id="configuring-gevent"> <span id="gevent-configuration"></span><h1>Configuring gevent<a class="headerlink" href="#configuring-gevent" title="Link to this heading">¶</a></h1> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference internal" href="api/gevent.html#gevent.setswitchinterval" title="gevent.setswitchinterval"><code class="xref py py-func docutils literal notranslate"><span class="pre">gevent.setswitchinterval()</span></code></a> For additional runtime configuration.</p> </div> <dl class="py class"> <dt class="sig sig-object py" id="gevent._config.Config"> <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">Config</span></span><a class="reference internal" href="_modules/gevent/_config.html#Config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent._config.Config" title="Link to this definition">¶</a></dt> <dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.13)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p> <p>Global configuration for gevent.</p> <p>There is one instance of this object at <code class="docutils literal notranslate"><span class="pre">gevent.config</span></code>. If you are going to make changes in code, instead of using the documented environment variables, you need to make the changes before using any parts of gevent that might need those settings. For example:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">gevent</span> <span class="kn">import</span> <span class="n">config</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">config</span><span class="o">.</span><span class="n">fileobject</span> <span class="o">=</span> <span class="s1">&#39;thread&#39;</span> <span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">gevent</span> <span class="kn">import</span> <span class="n">fileobject</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">fileobject</span><span class="o">.</span><span class="n">FileObject</span><span class="o">.</span><span class="vm">__name__</span> <span class="go">&#39;FileObjectThread&#39;</span> </pre></div> </div> <div class="versionadded"> <p><span class="versionmodified added">Added in version 1.3a2.</span></p> </div> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.ares_servers"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">ares_servers</span></span><a class="headerlink" href="#gevent._config.Config.ares_servers" title="Link to this definition">¶</a></dt> <dd><p>A list of strings giving the IP addresses of nameservers for the ares resolver.</p> <p>In the environment variable, these strings are separated by commas.</p> <div class="deprecated"> <p><span class="versionmodified deprecated">Deprecated since version 1.3a2: </span>Prefer the <a class="reference internal" href="#gevent._config.Config.resolver_nameservers" title="gevent._config.Config.resolver_nameservers"><code class="xref py py-attr docutils literal notranslate"><span class="pre">resolver_nameservers</span></code></a> setting. If both are set, the results are not defined.</p> </div> <p>The default value is <a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENTARES_SERVERS</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.ares_timeout"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">ares_timeout</span></span><a class="headerlink" href="#gevent._config.Config.ares_timeout" title="Link to this definition">¶</a></dt> <dd><div class="deprecated"> <p><span class="versionmodified deprecated">Deprecated since version 1.3a2: </span>Prefer the <a class="reference internal" href="#gevent._config.Config.resolver_timeout" title="gevent._config.Config.resolver_timeout"><code class="xref py py-attr docutils literal notranslate"><span class="pre">resolver_timeout</span></code></a> setting. If both are set, the results are not defined.</p> </div> <p>The default value is <a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENTARES_TIMEOUT</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.disable_watch_children"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">disable_watch_children</span></span><a class="headerlink" href="#gevent._config.Config.disable_watch_children" title="Link to this definition">¶</a></dt> <dd><p>Should we <em>not</em> watch children with the event loop watchers?</p> <p>This is an advanced setting.</p> <p>See <a class="reference internal" href="api/gevent.os.html#module-gevent.os" title="gevent.os"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.os</span></code></a> for a detailed description.</p> <p>This is a boolean value.</p> <p>In the environment variable, it may be given as <code class="docutils literal notranslate"><span class="pre">1</span></code>, <code class="docutils literal notranslate"><span class="pre">true</span></code>, <code class="docutils literal notranslate"><span class="pre">on</span></code> or <code class="docutils literal notranslate"><span class="pre">yes</span></code> for <a class="reference external" href="https://docs.python.org/3/library/constants.html#True" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">True</span></code></a>, or <code class="docutils literal notranslate"><span class="pre">0</span></code>, <code class="docutils literal notranslate"><span class="pre">false</span></code>, <code class="docutils literal notranslate"><span class="pre">off</span></code>, or <code class="docutils literal notranslate"><span class="pre">no</span></code> for <a class="reference external" href="https://docs.python.org/3/library/constants.html#False" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">False</span></code></a>.</p> <p>The default value is <a class="reference external" href="https://docs.python.org/3/library/constants.html#False" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">False</span></code></a></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_NOWAITPID</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.fileobject"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">fileobject</span></span><a class="headerlink" href="#gevent._config.Config.fileobject" title="Link to this definition">¶</a></dt> <dd><p>The kind of <code class="docutils literal notranslate"><span class="pre">FileObject</span></code> we will use.</p> <p>See <a class="reference internal" href="api/gevent.fileobject.html#module-gevent.fileobject" title="gevent.fileobject"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.fileobject</span></code></a> for a detailed description.</p> <p>This is an importable value. It can be given as a string naming an importable object, or a list of strings in preference order and the first successfully importable object will be used. (Separate values in the environment variable with commas.) It can also be given as the callable object itself (in code). Shorthand names for default objects are [‘thread’, ‘posix’, ‘block’]</p> <p>The default value is <code class="xref py py-obj docutils literal notranslate"><span class="pre">['posix',</span> <span class="pre">'thread']</span></code></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_FILE</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.format_context"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">format_context</span></span><a class="headerlink" href="#gevent._config.Config.format_context" title="Link to this definition">¶</a></dt> <dd><p>This is an importable value. It can be given as a string naming an importable object, or a list of strings in preference order and the first successfully importable object will be used. (Separate values in the environment variable with commas.) It can also be given as the callable object itself (in code).</p> <p>The default value is <a class="reference external" href="https://docs.python.org/3/library/pprint.html#pprint.saferepr" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">pprint.saferepr</span></code></a></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_FORMAT_CONTEXT</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.libev_backend"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">libev_backend</span></span><a class="headerlink" href="#gevent._config.Config.libev_backend" title="Link to this definition">¶</a></dt> <dd><p>The backend for libev, such as ‘select’</p> <p>The default value is <a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_BACKEND</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.loop"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">loop</span></span><a class="headerlink" href="#gevent._config.Config.loop" title="Link to this definition">¶</a></dt> <dd><p>The kind of the loop we use.</p> <p>On Windows, this defaults to libuv, while on other platforms it defaults to libev.</p> <p>This is an importable value. It can be given as a string naming an importable object, or a list of strings in preference order and the first successfully importable object will be used. (Separate values in the environment variable with commas.) It can also be given as the callable object itself (in code). Shorthand names for default objects are [‘libev-cext’, ‘libev-cffi’, ‘libuv-cffi’, ‘libuv’]</p> <p>The default value is <code class="xref py py-obj docutils literal notranslate"><span class="pre">['libev-cext',</span> <span class="pre">'libev-cffi',</span> <span class="pre">'libuv-cffi']</span></code></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_LOOP</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.max_blocking_time"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">max_blocking_time</span></span><a class="headerlink" href="#gevent._config.Config.max_blocking_time" title="Link to this definition">¶</a></dt> <dd><p>If the <a class="reference internal" href="#gevent._config.Config.monitor_thread" title="gevent._config.Config.monitor_thread"><code class="xref py py-obj docutils literal notranslate"><span class="pre">monitor_thread</span></code></a> is enabled, this is approximately how long (in seconds) the event loop will be allowed to block before a warning is issued.</p> <p>This function depends on using <a class="reference external" href="https://greenlet.readthedocs.io/en/latest/api.html#greenlet.settrace" title="(in greenlet v3.1.2.dev0)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">greenlet.settrace</span></code></a>, so installing your own trace function after starting the monitoring thread will cause this feature to misbehave unless you call the function returned by <a class="reference external" href="https://greenlet.readthedocs.io/en/latest/api.html#greenlet.settrace" title="(in greenlet v3.1.2.dev0)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">greenlet.settrace</span></code></a>. If you install a tracing function <em>before</em> the monitoring thread is started, it will still be called.</p> <div class="admonition note"> <p class="admonition-title">Note</p> <p>In the unlikely event of creating and using multiple different gevent hubs in the same native thread in a short period of time, especially without destroying the hubs, false positives may be reported.</p> </div> <div class="versionadded"> <p><span class="versionmodified added">Added in version 1.3b1.</span></p> </div> <p>The default value is <code class="xref py py-obj docutils literal notranslate"><span class="pre">0.1</span></code></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_MAX_BLOCKING_TIME</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.max_memory_usage"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">max_memory_usage</span></span><a class="headerlink" href="#gevent._config.Config.max_memory_usage" title="Link to this definition">¶</a></dt> <dd><p>If <a class="reference internal" href="#gevent._config.Config.monitor_thread" title="gevent._config.Config.monitor_thread"><code class="xref py py-obj docutils literal notranslate"><span class="pre">monitor_thread</span></code></a> is enabled, then if memory usage exceeds this amount (in bytes), events will be emitted. See <a class="reference internal" href="api/gevent.events.html#module-gevent.events" title="gevent.events"><code class="xref py py-obj docutils literal notranslate"><span class="pre">gevent.events</span></code></a>. In the environment variable, you can use a suffix of ‘kb’, ‘mb’ or ‘gb’ to specify the value in kilobytes, megabytes or gigibytes.</p> <p>There is no default value for this setting. If you wish to cap memory usage, you must choose a value.</p> <p>The default value is <a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_MONITOR_MEMORY_MAX</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.memory_monitor_period"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">memory_monitor_period</span></span><a class="headerlink" href="#gevent._config.Config.memory_monitor_period" title="Link to this definition">¶</a></dt> <dd><p>If <a class="reference internal" href="#gevent._config.Config.monitor_thread" title="gevent._config.Config.monitor_thread"><code class="xref py py-obj docutils literal notranslate"><span class="pre">monitor_thread</span></code></a> is enabled, this is approximately how long (in seconds) we will go between checking the processes memory usage.</p> <p>Checking the memory usage is relatively expensive on some operating systems, so this should not be too low. gevent will place a floor value on it.</p> <p>The default value is <code class="xref py py-obj docutils literal notranslate"><span class="pre">5</span></code></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_MONITOR_MEMORY_PERIOD</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.monitor_thread"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">monitor_thread</span></span><a class="headerlink" href="#gevent._config.Config.monitor_thread" title="Link to this definition">¶</a></dt> <dd><p>Should each hub start a native OS thread to monitor for problems?</p> <p>Such a thread will periodically check to see if the event loop is blocked for longer than <a class="reference internal" href="#gevent._config.Config.max_blocking_time" title="gevent._config.Config.max_blocking_time"><code class="xref py py-obj docutils literal notranslate"><span class="pre">max_blocking_time</span></code></a>, producing output on the hub’s exception stream (stderr by default) if it detects this condition.</p> <p>If this setting is true, then this thread will be created the first time the hub is switched to, or you can call <code class="xref py py-meth docutils literal notranslate"><span class="pre">gevent.hub.Hub.start_periodic_monitoring_thread()</span></code> at any time to create it (from the same thread that will run the hub). That function will return an instance of <a class="reference internal" href="api/gevent.events.html#gevent.events.IPeriodicMonitorThread" title="gevent.events.IPeriodicMonitorThread"><code class="xref py py-class docutils literal notranslate"><span class="pre">gevent.events.IPeriodicMonitorThread</span></code></a> to which you can add your own monitoring functions. That function also emits an event of <a class="reference internal" href="api/gevent.events.html#gevent.events.PeriodicMonitorThreadStartedEvent" title="gevent.events.PeriodicMonitorThreadStartedEvent"><code class="xref py py-class docutils literal notranslate"><span class="pre">gevent.events.PeriodicMonitorThreadStartedEvent</span></code></a>.</p> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference internal" href="#gevent._config.Config.max_blocking_time" title="gevent._config.Config.max_blocking_time"><code class="xref py py-obj docutils literal notranslate"><span class="pre">max_blocking_time</span></code></a></p> </div> <div class="versionadded"> <p><span class="versionmodified added">Added in version 1.3b1.</span></p> </div> <p>This is a boolean value.</p> <p>In the environment variable, it may be given as <code class="docutils literal notranslate"><span class="pre">1</span></code>, <code class="docutils literal notranslate"><span class="pre">true</span></code>, <code class="docutils literal notranslate"><span class="pre">on</span></code> or <code class="docutils literal notranslate"><span class="pre">yes</span></code> for <a class="reference external" href="https://docs.python.org/3/library/constants.html#True" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">True</span></code></a>, or <code class="docutils literal notranslate"><span class="pre">0</span></code>, <code class="docutils literal notranslate"><span class="pre">false</span></code>, <code class="docutils literal notranslate"><span class="pre">off</span></code>, or <code class="docutils literal notranslate"><span class="pre">no</span></code> for <a class="reference external" href="https://docs.python.org/3/library/constants.html#False" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">False</span></code></a>.</p> <p>The default value is <a class="reference external" href="https://docs.python.org/3/library/constants.html#False" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">False</span></code></a></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_MONITOR_THREAD_ENABLE</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.resolver"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">resolver</span></span><a class="headerlink" href="#gevent._config.Config.resolver" title="Link to this definition">¶</a></dt> <dd><p>The callable that will be used to create <a class="reference internal" href="api/gevent.hub.html#gevent.hub.Hub.resolver" title="gevent.hub.Hub.resolver"><code class="xref py py-attr docutils literal notranslate"><span class="pre">gevent.hub.Hub.resolver</span></code></a>.</p> <p>See <a class="reference internal" href="dns.html"><span class="doc">Name Resolution (DNS)</span></a> for more information.</p> <p>This is an importable value. It can be given as a string naming an importable object, or a list of strings in preference order and the first successfully importable object will be used. (Separate values in the environment variable with commas.) It can also be given as the callable object itself (in code). Shorthand names for default objects are [‘ares’, ‘thread’, ‘block’, ‘dnspython’]</p> <p>The default value is <code class="xref py py-obj docutils literal notranslate"><span class="pre">['thread',</span> <span class="pre">'dnspython',</span> <span class="pre">'ares',</span> <span class="pre">'block']</span></code></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_RESOLVER</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.resolver_nameservers"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">resolver_nameservers</span></span><a class="headerlink" href="#gevent._config.Config.resolver_nameservers" title="Link to this definition">¶</a></dt> <dd><p>A list of strings giving the IP addresses of nameservers for the (non-system) resolver.</p> <p>In the environment variable, these strings are separated by commas.</p> <p class="rubric">Resolver Behaviour</p> <ul> <li><p>blocking</p> <p>Ignored</p> </li> <li><p>Threaded</p> <p>Ignored</p> </li> <li><p>dnspython</p> <p>If this setting is not given, the dnspython resolver will load nameservers to use from <code class="docutils literal notranslate"><span class="pre">/etc/resolv.conf</span></code> or the Windows registry. This setting replaces any nameservers read from those means. Note that the file and registry are still read for other settings.</p> <div class="admonition caution"> <p class="admonition-title">Caution</p> <p>dnspython does not validate the members of the list. An improper address (such as a hostname instead of IP) has undefined results, including hanging the process.</p> </div> </li> <li><p>ares</p> <p>Similar to dnspython, but with more platform and compile-time options. ares validates that the members of the list are valid addresses.</p> </li> </ul> <p>The default value is <a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_RESOLVER_NAMESERVERS</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.resolver_timeout"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">resolver_timeout</span></span><a class="headerlink" href="#gevent._config.Config.resolver_timeout" title="Link to this definition">¶</a></dt> <dd><p>The total amount of time that the DNS resolver will spend making queries.</p> <p>Only the ares and dnspython resolvers support this.</p> <div class="versionadded"> <p><span class="versionmodified added">Added in version 1.3a2.</span></p> </div> <p>The default value is <a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_RESOLVER_TIMEOUT</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.threadpool"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">threadpool</span></span><a class="headerlink" href="#gevent._config.Config.threadpool" title="Link to this definition">¶</a></dt> <dd><p>The kind of threadpool we use.</p> <p>This is an importable value. It can be given as a string naming an importable object, or a list of strings in preference order and the first successfully importable object will be used. (Separate values in the environment variable with commas.) It can also be given as the callable object itself (in code).</p> <p>The default value is <a class="reference internal" href="api/gevent.threadpool.html#gevent.threadpool.ThreadPool" title="gevent.threadpool.ThreadPool"><code class="xref py py-obj docutils literal notranslate"><span class="pre">gevent.threadpool.ThreadPool</span></code></a></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_THREADPOOL</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.threadpool_idle_task_timeout"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">threadpool_idle_task_timeout</span></span><a class="headerlink" href="#gevent._config.Config.threadpool_idle_task_timeout" title="Link to this definition">¶</a></dt> <dd><p>How long threads in the default threadpool (used for DNS by default) are allowed to be idle before exiting.</p> <p>Use -1 for no timeout.</p> <div class="versionadded"> <p><span class="versionmodified added">Added in version 22.08.0.</span></p> </div> <p>The default value is <code class="xref py py-obj docutils literal notranslate"><span class="pre">5.0</span></code></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_THREADPOOL_IDLE_TASK_TIMEOUT</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.trace_malloc"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">trace_malloc</span></span><a class="headerlink" href="#gevent._config.Config.trace_malloc" title="Link to this definition">¶</a></dt> <dd><p>Should FFI objects track their allocation?</p> <p>This is only useful for low-level debugging.</p> <p>On Python 3, this environment variable is built in to the interpreter, and it may also be set with the <code class="docutils literal notranslate"><span class="pre">-X</span> <span class="pre">tracemalloc</span></code> command line argument.</p> <p>On Python 2, gevent interprets this argument and adds extra tracking information for FFI objects.</p> <p>The default value is <a class="reference external" href="https://docs.python.org/3/library/constants.html#False" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">False</span></code></a></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">PYTHONTRACEMALLOC</span></code> can be used to control this.</p> </dd></dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent._config.Config.track_greenlet_tree"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">track_greenlet_tree</span></span><a class="headerlink" href="#gevent._config.Config.track_greenlet_tree" title="Link to this definition">¶</a></dt> <dd><p>Should <code class="xref py py-obj docutils literal notranslate"><span class="pre">Greenlet</span></code> objects track their spawning tree?</p> <p>Setting this to a false value will make spawning <code class="xref py py-obj docutils literal notranslate"><span class="pre">Greenlet</span></code> objects and using <code class="xref py py-obj docutils literal notranslate"><span class="pre">spawn_raw</span></code> faster, but the <code class="docutils literal notranslate"><span class="pre">spawning_greenlet</span></code>, <code class="docutils literal notranslate"><span class="pre">spawn_tree_locals</span></code> and <code class="docutils literal notranslate"><span class="pre">spawning_stack</span></code> will not be captured. Setting this to a false value can also reduce memory usage because capturing the stack captures some information about Python frames.</p> <div class="versionadded"> <p><span class="versionmodified added">Added in version 1.3b1.</span></p> </div> <p>This is a boolean value.</p> <p>In the environment variable, it may be given as <code class="docutils literal notranslate"><span class="pre">1</span></code>, <code class="docutils literal notranslate"><span class="pre">true</span></code>, <code class="docutils literal notranslate"><span class="pre">on</span></code> or <code class="docutils literal notranslate"><span class="pre">yes</span></code> for <a class="reference external" href="https://docs.python.org/3/library/constants.html#True" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">True</span></code></a>, or <code class="docutils literal notranslate"><span class="pre">0</span></code>, <code class="docutils literal notranslate"><span class="pre">false</span></code>, <code class="docutils literal notranslate"><span class="pre">off</span></code>, or <code class="docutils literal notranslate"><span class="pre">no</span></code> for <a class="reference external" href="https://docs.python.org/3/library/constants.html#False" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">False</span></code></a>.</p> <p>The default value is <a class="reference external" href="https://docs.python.org/3/library/constants.html#True" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">True</span></code></a></p> <p>The environment variable <code class="docutils literal notranslate"><span class="pre">GEVENT_TRACK_GREENLET_TREE</span></code> can be used to control this.</p> </dd></dl> </dd></dl> </section> </article> </div> <footer> <div class="related-pages"> <a class="next-page" href="api/index.html"> <div class="page-info"> <div class="context"> <span>Next</span> </div> <div class="title">API reference</div> </div> <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> </a> <a class="prev-page" href="loop_impls.html"> <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> <div class="page-info"> <div class="context"> <span>Previous</span> </div> <div class="title">Event Loop Implementations: libuv and libev</div> </div> </a> </div> <div class="bottom-of-page"> <div class="left-details"> <div class="copyright"> Copyright &#169; 2009-2023, gevent contributors </div> Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s <a href="https://github.com/pradyunsg/furo">Furo</a> </div> <div class="right-details"> </div> </div> </footer> </div> <aside class="toc-drawer"> <div class="toc-sticky toc-scroll"> <div class="toc-title-container"> <span class="toc-title"> On this page </span> </div> <div class="toc-tree-container"> <div class="toc-tree"> <ul> <li><a class="reference internal" href="#">Configuring gevent</a><ul> <li><a class="reference internal" href="#gevent._config.Config"><code class="docutils literal notranslate"><span class="pre">Config</span></code></a><ul> <li><a class="reference internal" href="#gevent._config.Config.ares_servers"><code class="docutils literal notranslate"><span class="pre">Config.ares_servers</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.ares_timeout"><code class="docutils literal notranslate"><span class="pre">Config.ares_timeout</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.disable_watch_children"><code class="docutils literal notranslate"><span class="pre">Config.disable_watch_children</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.fileobject"><code class="docutils literal notranslate"><span class="pre">Config.fileobject</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.format_context"><code class="docutils literal notranslate"><span class="pre">Config.format_context</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.libev_backend"><code class="docutils literal notranslate"><span class="pre">Config.libev_backend</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.loop"><code class="docutils literal notranslate"><span class="pre">Config.loop</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.max_blocking_time"><code class="docutils literal notranslate"><span class="pre">Config.max_blocking_time</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.max_memory_usage"><code class="docutils literal notranslate"><span class="pre">Config.max_memory_usage</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.memory_monitor_period"><code class="docutils literal notranslate"><span class="pre">Config.memory_monitor_period</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.monitor_thread"><code class="docutils literal notranslate"><span class="pre">Config.monitor_thread</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.resolver"><code class="docutils literal notranslate"><span class="pre">Config.resolver</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.resolver_nameservers"><code class="docutils literal notranslate"><span class="pre">Config.resolver_nameservers</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.resolver_timeout"><code class="docutils literal notranslate"><span class="pre">Config.resolver_timeout</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.threadpool"><code class="docutils literal notranslate"><span class="pre">Config.threadpool</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.threadpool_idle_task_timeout"><code class="docutils literal notranslate"><span class="pre">Config.threadpool_idle_task_timeout</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.trace_malloc"><code class="docutils literal notranslate"><span class="pre">Config.trace_malloc</span></code></a></li> <li><a class="reference internal" href="#gevent._config.Config.track_greenlet_tree"><code class="docutils literal notranslate"><span class="pre">Config.track_greenlet_tree</span></code></a></li> </ul> </li> </ul> </li> </ul> </div> </div> </div> </aside> </div> </div><script src="_static/documentation_options.js?v=32fdf4fc"></script> <script src="_static/doctools.js?v=9bcbadda"></script> <script src="_static/sphinx_highlight.js?v=dc90522c"></script> <script src="_static/scripts/furo.js?v=5fa4622c"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10