CINXE.COM
gevent.subprocess – Cooperative subprocess module - 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="gevent.thread – Implementation of the standard thread module that spawns greenlets" href="gevent.thread.html" /><link rel="prev" title="gevent.signal – Cooperative implementation of special cases of signal.signal()" href="gevent.signal.html" /> <!-- Generated with Sphinx 8.1.3 and Furo 2024.08.06 --> <title>gevent.subprocess – Cooperative subprocess module - 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="/api/gevent.subprocess.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> <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="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="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="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="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="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="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"><a class="reference internal" href="../configuration.html">Configuring gevent</a></li> </ul> <ul class="current"> <li class="toctree-l1 current has-children"><a class="reference internal" href="index.html">API reference</a><input checked="" 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 class="current"> <li class="toctree-l2"><a class="reference internal" href="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="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="gevent.greenlet.html">Greenlet Objects</a></li> <li class="toctree-l2 has-children"><a class="reference internal" href="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="gevent._socket3.html">Python 3 interface</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="gevent._socket3.html">Python 3 interface</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="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 current current-page"><a class="current reference internal" href="#"><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="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="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="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="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="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="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="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="module-gevent.subprocess"> <span id="gevent-subprocess-cooperative-subprocess-module"></span><h1><a class="reference internal" href="#module-gevent.subprocess" title="gevent.subprocess"><code class="xref py py-mod docutils literal notranslate"><span class="pre">gevent.subprocess</span></code></a> – Cooperative <code class="docutils literal notranslate"><span class="pre">subprocess</span></code> module<a class="headerlink" href="#module-gevent.subprocess" title="Link to this heading">¶</a></h1> <p>Cooperative <code class="docutils literal notranslate"><span class="pre">subprocess</span></code> module.</p> <div class="admonition caution"> <p class="admonition-title">Caution</p> <p>On POSIX platforms, this module is not usable from native threads other than the main thread; attempting to do so will raise a <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#TypeError" title="(in Python v3.13)"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TypeError</span></code></a>. This module depends on libev’s fork watchers. On POSIX systems, fork watchers are implemented using signals, and the thread to which process-directed signals are delivered <a class="reference external" href="http://www.linuxprogrammingblog.com/all-about-linux-signals?page=11">is not defined</a>. Because each native thread has its own gevent/libev loop, this means that a fork watcher registered with one loop (thread) may never see the signal about a child it spawned if the signal is sent to a different thread.</p> </div> <div class="admonition note"> <p class="admonition-title">Note</p> <p>The interface of this module is intended to match that of the standard library <a class="reference external" href="https://docs.python.org/3/library/subprocess.html#module-subprocess" title="(in Python v3.13)"><code class="xref py py-mod docutils literal notranslate"><span class="pre">subprocess</span></code></a> module (with many backwards compatible extensions from Python 3 backported to Python 2). There are some small differences between the Python 2 and Python 3 versions of that module (the Python 2 <code class="docutils literal notranslate"><span class="pre">TimeoutExpired</span></code> exception, notably, extends <code class="docutils literal notranslate"><span class="pre">Timeout</span></code> and there is no <code class="docutils literal notranslate"><span class="pre">SubprocessError</span></code>) and between the POSIX and Windows versions. The HTML documentation here can only describe one version; for definitive documentation, see the standard library or the source code.</p> </div> <dl class="py exception"> <dt class="sig sig-object py" id="gevent.subprocess.CalledProcessError"> <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">CalledProcessError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">returncode</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cmd</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stderr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/subprocess.html#CalledProcessError"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.CalledProcessError" title="Link to this definition">¶</a></dt> <dd><p>Bases: <a class="reference internal" href="#gevent.subprocess.SubprocessError" title="subprocess.SubprocessError"><code class="xref py py-class docutils literal notranslate"><span class="pre">SubprocessError</span></code></a></p> <p>Raised when run() is called with check=True and the process returns a non-zero exit status.</p> <dl class="simple"> <dt>Attributes:</dt><dd><p>cmd, returncode, stdout, stderr, output</p> </dd> </dl> <dl class="py property"> <dt class="sig sig-object py" id="gevent.subprocess.CalledProcessError.stdout"> <em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">stdout</span></span><a class="headerlink" href="#gevent.subprocess.CalledProcessError.stdout" title="Link to this definition">¶</a></dt> <dd><p>Alias for output attribute, to match stderr</p> </dd></dl> </dd></dl> <dl class="py exception"> <dt class="sig sig-object py" id="gevent.subprocess.SubprocessError"> <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">SubprocessError</span></span><a class="reference internal" href="../_modules/subprocess.html#SubprocessError"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.SubprocessError" title="Link to this definition">¶</a></dt> <dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#Exception" title="(in Python v3.13)"><code class="xref py py-class docutils literal notranslate"><span class="pre">Exception</span></code></a></p> </dd></dl> <dl class="py exception"> <dt class="sig sig-object py" id="gevent.subprocess.TimeoutExpired"> <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">TimeoutExpired</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cmd</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">output</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stderr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/subprocess.html#TimeoutExpired"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.TimeoutExpired" title="Link to this definition">¶</a></dt> <dd><p>Bases: <a class="reference internal" href="#gevent.subprocess.SubprocessError" title="subprocess.SubprocessError"><code class="xref py py-class docutils literal notranslate"><span class="pre">SubprocessError</span></code></a></p> <p>This exception is raised when the timeout expires while waiting for a child process.</p> <dl class="simple"> <dt>Attributes:</dt><dd><p>cmd, output, stdout, stderr, timeout</p> </dd> </dl> </dd></dl> <dl class="py class"> <dt class="sig sig-object py" id="gevent.subprocess.CompletedProcess"> <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">CompletedProcess</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">returncode</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stdout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stderr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/subprocess.html#CompletedProcess"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.CompletedProcess" 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>A process that has finished running.</p> <p>This is returned by run().</p> <dl class="simple"> <dt>Attributes:</dt><dd><ul class="simple"> <li><p>args: The list or str args passed to run().</p></li> <li><p>returncode: The exit code of the process, negative for signals.</p></li> <li><p>stdout: The standard output (None if not captured).</p></li> <li><p>stderr: The standard error (None if not captured).</p></li> </ul> </dd> </dl> <div class="versionadded"> <p><span class="versionmodified added">Added in version 1.2a1: </span>This first appeared in Python 3.5 and is available to all Python versions in gevent.</p> </div> <dl class="py method"> <dt class="sig sig-object py" id="gevent.subprocess.CompletedProcess.check_returncode"> <span class="sig-name descname"><span class="pre">check_returncode</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/subprocess.html#CompletedProcess.check_returncode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.CompletedProcess.check_returncode" title="Link to this definition">¶</a></dt> <dd><p>Raise CalledProcessError if the exit code is non-zero.</p> </dd></dl> </dd></dl> <dl class="py class"> <dt class="sig sig-object py" id="gevent.subprocess.Popen"> <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">Popen</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bufsize=-1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">executable=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stdin=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stdout=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stderr=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">preexec_fn=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">close_fds=<object</span> <span class="pre">object></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shell=False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cwd=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">env=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">universal_newlines=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">startupinfo=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">creationflags=0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">restore_signals=True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">start_new_session=False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pass_fds=()</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">errors=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">text=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">group=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extra_groups=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">user=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">umask=-1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pipesize=-1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">process_group=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">threadpool=None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/subprocess.html#Popen"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.Popen" 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>The underlying process creation and management in this module is handled by the Popen class. It offers a lot of flexibility so that developers are able to handle the less common cases not covered by the convenience functions.</p> <div class="admonition seealso"> <p class="admonition-title">See also</p> <p><a class="reference external" href="https://docs.python.org/3/library/subprocess.html#subprocess.Popen" title="(in Python v3.13)"><code class="xref py py-class docutils literal notranslate"><span class="pre">subprocess.Popen</span></code></a> This class should have the same interface as the standard library class.</p> </div> <div class="admonition caution"> <p class="admonition-title">Caution</p> <p>The default values of some arguments, notably <code class="docutils literal notranslate"><span class="pre">buffering</span></code>, differ between Python 2 and Python 3. For the most consistent behaviour across versions, it’s best to explicitly pass the desired values.</p> </div> <div class="admonition caution"> <p class="admonition-title">Caution</p> <p>On Python 2, the <code class="docutils literal notranslate"><span class="pre">read</span></code> method of the <code class="docutils literal notranslate"><span class="pre">stdout</span></code> and <code class="docutils literal notranslate"><span class="pre">stderr</span></code> attributes will not be buffered unless buffering is explicitly requested (e.g., <code class="xref py py-obj docutils literal notranslate"><span class="pre">bufsize=-1</span></code>). This is different than the <code class="docutils literal notranslate"><span class="pre">read</span></code> method of the standard library attributes, which will buffer internally even if no buffering has been requested. This matches the Python 3 behaviour. For portability, please explicitly request buffering if you want <code class="docutils literal notranslate"><span class="pre">read(n)</span></code> to return all <code class="docutils literal notranslate"><span class="pre">n</span></code> bytes, making more than one system call if needed. See <a class="reference external" href="https://github.com/gevent/gevent/issues/1701">issue 1701</a> for more context.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.2a1: </span>Instances can now be used as context managers under Python 2.7. Previously this was restricted to Python 3.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.2a1: </span>Instances now save the <code class="docutils literal notranslate"><span class="pre">args</span></code> attribute under Python 2.7. Previously this was restricted to Python 3.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.2b1: </span>Add the <code class="docutils literal notranslate"><span class="pre">encoding</span></code> and <code class="docutils literal notranslate"><span class="pre">errors</span></code> parameters for Python 3.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.3a1: </span>Accept “path-like” objects for the <em>cwd</em> parameter on all platforms. This was added to Python 3.6. Previously with gevent, it only worked on POSIX platforms on 3.6.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.3a1: </span>Add the <code class="docutils literal notranslate"><span class="pre">text</span></code> argument as a synonym for <code class="docutils literal notranslate"><span class="pre">universal_newlines</span></code>, as added on Python 3.7.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.3a2: </span>Allow the same keyword arguments under Python 2 as Python 3: <code class="docutils literal notranslate"><span class="pre">pass_fds</span></code>, <code class="docutils literal notranslate"><span class="pre">start_new_session</span></code>, <code class="docutils literal notranslate"><span class="pre">restore_signals</span></code>, <code class="docutils literal notranslate"><span class="pre">encoding</span></code> and <code class="docutils literal notranslate"><span class="pre">errors</span></code>. Under Python 2, <code class="docutils literal notranslate"><span class="pre">encoding</span></code> and <code class="docutils literal notranslate"><span class="pre">errors</span></code> are ignored because native handling of universal newlines is used.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.3a2: </span>Under Python 2, <code class="docutils literal notranslate"><span class="pre">restore_signals</span></code> defaults to <code class="docutils literal notranslate"><span class="pre">False</span></code>. Previously it defaulted to <code class="docutils literal notranslate"><span class="pre">True</span></code>, the same as it did in Python 3.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 20.6.0: </span>Add the <em>group</em>, <em>extra_groups</em>, <em>user</em>, and <em>umask</em> arguments. These were added to Python 3.9, but are available in any gevent version, provided the underlying platform support is present.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 20.12.0: </span>On Python 2 only, if unbuffered binary communication is requested, the <code class="docutils literal notranslate"><span class="pre">stdin</span></code> attribute of this object will have a <code class="docutils literal notranslate"><span class="pre">write</span></code> method that actually performs internal buffering and looping, similar to the standard library. It guarantees to write all the data given to it in a single call (but internally it may make many system calls and/or trips around the event loop to accomplish this). See <a class="extlink-issue reference external" href="https://github.com/gevent/gevent/issues/1711">issue #1711</a>.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 21.12.0: </span>Added the <code class="docutils literal notranslate"><span class="pre">pipesize</span></code> argument for compatibility with Python 3.10. This is ignored on all platforms.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 22.08.0: </span>Added the <code class="docutils literal notranslate"><span class="pre">process_group</span></code> and <code class="docutils literal notranslate"><span class="pre">check</span></code> arguments for compatibility with Python 3.11.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 24.10.1: </span>To match Python 3.13, <code class="docutils literal notranslate"><span class="pre">stdout=STDOUT</span></code> now raises a <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#ValueError" title="(in Python v3.13)"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ValueError</span></code></a>.</p> </div> <dl class="py method"> <dt class="sig sig-object py" id="gevent.subprocess.Popen.communicate"> <span class="sig-name descname"><span class="pre">communicate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">input</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/subprocess.html#Popen.communicate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.Popen.communicate" title="Link to this definition">¶</a></dt> <dd><p>Interact with process and return its output and error.</p> <ul class="simple"> <li><p>Send <em>input</em> data to stdin.</p></li> <li><p>Read data from stdout and stderr, until end-of-file is reached.</p></li> <li><p>Wait for process to terminate.</p></li> </ul> <p>The optional <em>input</em> argument should be a string to be sent to the child process, or None, if no data should be sent to the child.</p> <p>communicate() returns a tuple (stdout, stderr).</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><p><strong>timeout</strong> – Under Python 2, this is a gevent extension; if given and it expires, we will raise <a class="reference internal" href="#gevent.subprocess.TimeoutExpired" title="gevent.subprocess.TimeoutExpired"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TimeoutExpired</span></code></a>, which extends <a class="reference internal" href="gevent.timeout.html#gevent.Timeout" title="gevent.timeout.Timeout"><code class="xref py py-exc docutils literal notranslate"><span class="pre">gevent.timeout.Timeout</span></code></a> (note that this only extends <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#BaseException" title="(in Python v3.13)"><code class="xref py py-exc docutils literal notranslate"><span class="pre">BaseException</span></code></a>, <em>not</em> <a class="reference external" href="https://docs.python.org/3/library/exceptions.html#Exception" title="(in Python v3.13)"><code class="xref py py-exc docutils literal notranslate"><span class="pre">Exception</span></code></a>) Under Python 3, this raises the standard <a class="reference internal" href="#gevent.subprocess.TimeoutExpired" title="gevent.subprocess.TimeoutExpired"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TimeoutExpired</span></code></a> exception.</p> </dd> </dl> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.1a2: </span>Under Python 2, if the <em>timeout</em> elapses, raise the <a class="reference internal" href="gevent.timeout.html#gevent.Timeout" title="gevent.timeout.Timeout"><code class="xref py py-exc docutils literal notranslate"><span class="pre">gevent.timeout.Timeout</span></code></a> exception. Previously, we silently returned.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.1b5: </span>Honor a <em>timeout</em> even if there’s no way to communicate with the child (stdin, stdout, and stderr are not pipes).</p> </div> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.subprocess.Popen.kill"> <span class="sig-name descname"><span class="pre">kill</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/subprocess.html#Popen.kill"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.Popen.kill" title="Link to this definition">¶</a></dt> <dd><p>Kill the process with SIGKILL</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.subprocess.Popen.pipe_cloexec"> <span class="sig-name descname"><span class="pre">pipe_cloexec</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/subprocess.html#Popen.pipe_cloexec"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.Popen.pipe_cloexec" title="Link to this definition">¶</a></dt> <dd><p>Create a pipe with FDs set CLOEXEC.</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.subprocess.Popen.poll"> <span class="sig-name descname"><span class="pre">poll</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/subprocess.html#Popen.poll"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.Popen.poll" title="Link to this definition">¶</a></dt> <dd><p>Check if child process has terminated. Set and return <code class="xref py py-attr docutils literal notranslate"><span class="pre">returncode</span></code> attribute.</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.subprocess.Popen.send_signal"> <span class="sig-name descname"><span class="pre">send_signal</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sig</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/subprocess.html#Popen.send_signal"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.Popen.send_signal" title="Link to this definition">¶</a></dt> <dd><p>Send a signal to the process</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.subprocess.Popen.terminate"> <span class="sig-name descname"><span class="pre">terminate</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/subprocess.html#Popen.terminate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.Popen.terminate" title="Link to this definition">¶</a></dt> <dd><p>Terminate the process with SIGTERM</p> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="gevent.subprocess.Popen.wait"> <span class="sig-name descname"><span class="pre">wait</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_raise_exc</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/gevent/subprocess.html#Popen.wait"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.Popen.wait" title="Link to this definition">¶</a></dt> <dd><p>Wait for child process to terminate. Returns <code class="xref py py-attr docutils literal notranslate"><span class="pre">returncode</span></code> attribute.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><p><strong>timeout</strong> – The floating point number of seconds to wait. Under Python 2, this is a gevent extension, and we simply return if it expires. Under Python 3, if this time elapses without finishing the process, <a class="reference internal" href="#gevent.subprocess.TimeoutExpired" title="gevent.subprocess.TimeoutExpired"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TimeoutExpired</span></code></a> is raised.</p> </dd> </dl> </dd></dl> </dd></dl> <dl class="py function"> <dt class="sig sig-object py" id="gevent.subprocess.call"> <span class="sig-name descname"><span class="pre">call</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stdin</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stdout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stderr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shell</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">returncode</span></span></span><a class="reference internal" href="../_modules/gevent/subprocess.html#call"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.call" title="Link to this definition">¶</a></dt> <dd><p>Run command with arguments. Wait for command to complete or timeout, then return the returncode attribute.</p> <p>The arguments are the same as for the Popen constructor. Example:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">retcode</span> <span class="o">=</span> <span class="n">call</span><span class="p">([</span><span class="s2">"ls"</span><span class="p">,</span> <span class="s2">"-l"</span><span class="p">])</span> </pre></div> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.2a1: </span>The <code class="docutils literal notranslate"><span class="pre">timeout</span></code> keyword argument is now accepted on all supported versions of Python (not just Python 3) and if it expires will raise a <a class="reference internal" href="#gevent.subprocess.TimeoutExpired" title="gevent.subprocess.TimeoutExpired"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TimeoutExpired</span></code></a> exception (under Python 2 this is a subclass of <a class="reference internal" href="gevent.timeout.html#gevent.Timeout" title="gevent.Timeout"><code class="xref py py-exc docutils literal notranslate"><span class="pre">Timeout</span></code></a>).</p> </div> </dd></dl> <dl class="py function"> <dt class="sig sig-object py" id="gevent.subprocess.check_call"> <span class="sig-name descname"><span class="pre">check_call</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stdin</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stdout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stderr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shell</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="m"><span class="pre">0</span></span></span></span><a class="reference internal" href="../_modules/gevent/subprocess.html#check_call"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.check_call" title="Link to this definition">¶</a></dt> <dd><p>Run command with arguments. Wait for command to complete. If the exit code was zero then return, otherwise raise <a class="reference internal" href="#gevent.subprocess.CalledProcessError" title="gevent.subprocess.CalledProcessError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">CalledProcessError</span></code></a>. The <code class="docutils literal notranslate"><span class="pre">CalledProcessError</span></code> object will have the return code in the returncode attribute.</p> <p>The arguments are the same as for the Popen constructor. Example:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">retcode</span> <span class="o">=</span> <span class="n">check_call</span><span class="p">([</span><span class="s2">"ls"</span><span class="p">,</span> <span class="s2">"-l"</span><span class="p">])</span> </pre></div> </div> </dd></dl> <dl class="py function"> <dt class="sig sig-object py" id="gevent.subprocess.check_output"> <span class="sig-name descname"><span class="pre">check_output</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">input</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stdin</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stderr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shell</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">universal_newlines</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">output</span></span></span><a class="reference internal" href="../_modules/gevent/subprocess.html#check_output"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.check_output" title="Link to this definition">¶</a></dt> <dd><p>Run command with arguments and return its output.</p> <p>If the exit code was non-zero it raises a <a class="reference internal" href="#gevent.subprocess.CalledProcessError" title="gevent.subprocess.CalledProcessError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">CalledProcessError</span></code></a>. The <code class="docutils literal notranslate"><span class="pre">CalledProcessError</span></code> object will have the return code in the returncode attribute and output in the output attribute.</p> <p>The arguments are the same as for the Popen constructor. Example:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">check_output</span><span class="p">([</span><span class="s2">"ls"</span><span class="p">,</span> <span class="s2">"-1"</span><span class="p">,</span> <span class="s2">"/dev/null"</span><span class="p">])</span> <span class="go">'/dev/null\n'</span> </pre></div> </div> <p>The <code class="docutils literal notranslate"><span class="pre">stdout</span></code> argument is not allowed as it is used internally.</p> <p>To capture standard error in the result, use <code class="docutils literal notranslate"><span class="pre">stderr=STDOUT</span></code>:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">output</span> <span class="o">=</span> <span class="n">check_output</span><span class="p">([</span><span class="s2">"/bin/sh"</span><span class="p">,</span> <span class="s2">"-c"</span><span class="p">,</span> <span class="gp">... </span> <span class="s2">"ls -l non_existent_file ; exit 0"</span><span class="p">],</span> <span class="gp">... </span> <span class="n">stderr</span><span class="o">=</span><span class="n">STDOUT</span><span class="p">)</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">'ascii'</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s1">':'</span><span class="p">,</span> <span class="mi">1</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> <span class="go">No such file or directory</span> </pre></div> </div> <p>There is an additional optional argument, “input”, allowing you to pass a string to the subprocess’s stdin. If you use this argument you may not also use the Popen constructor’s “stdin” argument, as it too will be used internally. Example:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">check_output</span><span class="p">([</span><span class="s2">"sed"</span><span class="p">,</span> <span class="s2">"-e"</span><span class="p">,</span> <span class="s2">"s/foo/bar/"</span><span class="p">],</span> <span class="gp">... </span> <span class="nb">input</span><span class="o">=</span><span class="sa">b</span><span class="s2">"when in the course of fooman events</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> <span class="go">'when in the course of barman events\n'</span> </pre></div> </div> <p>If <code class="docutils literal notranslate"><span class="pre">universal_newlines=True</span></code> is passed, the return value will be a string rather than bytes.</p> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.2a1: </span>The <code class="docutils literal notranslate"><span class="pre">timeout</span></code> keyword argument is now accepted on all supported versions of Python (not just Python 3) and if it expires will raise a <a class="reference internal" href="#gevent.subprocess.TimeoutExpired" title="gevent.subprocess.TimeoutExpired"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TimeoutExpired</span></code></a> exception (under Python 2 this is a subclass of <a class="reference internal" href="gevent.timeout.html#gevent.Timeout" title="gevent.Timeout"><code class="xref py py-exc docutils literal notranslate"><span class="pre">Timeout</span></code></a>).</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.2a1: </span>The <code class="docutils literal notranslate"><span class="pre">input</span></code> keyword argument is now accepted on all supported versions of Python, not just Python 3</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 22.08.0: </span>Passing the <code class="docutils literal notranslate"><span class="pre">check</span></code> keyword argument is forbidden, just as in Python 3.11.</p> </div> </dd></dl> <dl class="py function"> <dt class="sig sig-object py" id="gevent.subprocess.getoutput"> <span class="sig-name descname"><span class="pre">getoutput</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cmd</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">errors</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/subprocess.html#getoutput"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.getoutput" title="Link to this definition">¶</a></dt> <dd><p>Return output (stdout or stderr) of executing cmd in a shell.</p> <p>Like getstatusoutput(), except the exit status is ignored and the return value is a string containing the command’s output. Example:</p> <div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">subprocess</span> <span class="gp">>>> </span><span class="n">subprocess</span><span class="o">.</span><span class="n">getoutput</span><span class="p">(</span><span class="s1">'ls /bin/ls'</span><span class="p">)</span> <span class="go">'/bin/ls'</span> </pre></div> </div> </dd></dl> <dl class="py function"> <dt class="sig sig-object py" id="gevent.subprocess.getstatusoutput"> <span class="sig-name descname"><span class="pre">getstatusoutput</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cmd</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encoding</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">errors</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/subprocess.html#getstatusoutput"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.getstatusoutput" title="Link to this definition">¶</a></dt> <dd><p>Return (exitcode, output) of executing cmd in a shell.</p> <p>Execute the string ‘cmd’ in a shell with ‘check_output’ and return a 2-tuple (status, output). The locale encoding is used to decode the output and process newlines.</p> <p>A trailing newline is stripped from the output. The exit status for the command can be interpreted according to the rules for the function ‘wait’. Example:</p> <div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">subprocess</span> <span class="gp">>>> </span><span class="n">subprocess</span><span class="o">.</span><span class="n">getstatusoutput</span><span class="p">(</span><span class="s1">'ls /bin/ls'</span><span class="p">)</span> <span class="go">(0, '/bin/ls')</span> <span class="gp">>>> </span><span class="n">subprocess</span><span class="o">.</span><span class="n">getstatusoutput</span><span class="p">(</span><span class="s1">'cat /bin/junk'</span><span class="p">)</span> <span class="go">(1, 'cat: /bin/junk: No such file or directory')</span> <span class="gp">>>> </span><span class="n">subprocess</span><span class="o">.</span><span class="n">getstatusoutput</span><span class="p">(</span><span class="s1">'/bin/junk'</span><span class="p">)</span> <span class="go">(127, 'sh: /bin/junk: not found')</span> <span class="gp">>>> </span><span class="n">subprocess</span><span class="o">.</span><span class="n">getstatusoutput</span><span class="p">(</span><span class="s1">'/bin/kill $$'</span><span class="p">)</span> <span class="go">(-15, '')</span> </pre></div> </div> </dd></dl> <dl class="py function"> <dt class="sig sig-object py" id="gevent.subprocess.run"> <span class="sig-name descname"><span class="pre">run</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stdin</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">input</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stdout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stderr</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shell</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">check</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#gevent.subprocess.CompletedProcess" title="gevent.subprocess.CompletedProcess"><span class="pre">CompletedProcess</span></a></span></span><a class="reference internal" href="../_modules/gevent/subprocess.html#run"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gevent.subprocess.run" title="Link to this definition">¶</a></dt> <dd><p>Run command with arguments and return a CompletedProcess instance.</p> <p>The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured.</p> <p>If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised.</p> <p>There is an optional argument “input”, allowing you to pass a string to the subprocess’s stdin. If you use this argument you may not also use the Popen constructor’s “stdin” argument, as it will be used internally. The other arguments are the same as for the Popen constructor. If universal_newlines=True is passed, the “input” argument must be a string and stdout/stderr in the returned object will be strings rather than bytes.</p> <div class="versionadded"> <p><span class="versionmodified added">Added in version 1.2a1: </span>This function first appeared in Python 3.5. It is available on all Python versions gevent supports.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 1.3a2: </span>Add the <code class="docutils literal notranslate"><span class="pre">capture_output</span></code> argument from Python 3.7. It automatically sets <code class="docutils literal notranslate"><span class="pre">stdout</span></code> and <code class="docutils literal notranslate"><span class="pre">stderr</span></code> to <code class="docutils literal notranslate"><span class="pre">PIPE</span></code>. It is an error to pass either of those arguments along with <code class="docutils literal notranslate"><span class="pre">capture_output</span></code>.</p> </div> </dd></dl> </section> </article> </div> <footer> <div class="related-pages"> <a class="next-page" href="gevent.thread.html"> <div class="page-info"> <div class="context"> <span>Next</span> </div> <div class="title"><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</div> </div> <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg> </a> <a class="prev-page" href="gevent.signal.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"><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></div> </div> </a> </div> <div class="bottom-of-page"> <div class="left-details"> <div class="copyright"> Copyright © 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="#"><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><ul> <li><a class="reference internal" href="#gevent.subprocess.CalledProcessError"><code class="docutils literal notranslate"><span class="pre">CalledProcessError</span></code></a><ul> <li><a class="reference internal" href="#gevent.subprocess.CalledProcessError.stdout"><code class="docutils literal notranslate"><span class="pre">CalledProcessError.stdout</span></code></a></li> </ul> </li> <li><a class="reference internal" href="#gevent.subprocess.SubprocessError"><code class="docutils literal notranslate"><span class="pre">SubprocessError</span></code></a></li> <li><a class="reference internal" href="#gevent.subprocess.TimeoutExpired"><code class="docutils literal notranslate"><span class="pre">TimeoutExpired</span></code></a></li> <li><a class="reference internal" href="#gevent.subprocess.CompletedProcess"><code class="docutils literal notranslate"><span class="pre">CompletedProcess</span></code></a><ul> <li><a class="reference internal" href="#gevent.subprocess.CompletedProcess.check_returncode"><code class="docutils literal notranslate"><span class="pre">CompletedProcess.check_returncode()</span></code></a></li> </ul> </li> <li><a class="reference internal" href="#gevent.subprocess.Popen"><code class="docutils literal notranslate"><span class="pre">Popen</span></code></a><ul> <li><a class="reference internal" href="#gevent.subprocess.Popen.communicate"><code class="docutils literal notranslate"><span class="pre">Popen.communicate()</span></code></a></li> <li><a class="reference internal" href="#gevent.subprocess.Popen.kill"><code class="docutils literal notranslate"><span class="pre">Popen.kill()</span></code></a></li> <li><a class="reference internal" href="#gevent.subprocess.Popen.pipe_cloexec"><code class="docutils literal notranslate"><span class="pre">Popen.pipe_cloexec()</span></code></a></li> <li><a class="reference internal" href="#gevent.subprocess.Popen.poll"><code class="docutils literal notranslate"><span class="pre">Popen.poll()</span></code></a></li> <li><a class="reference internal" href="#gevent.subprocess.Popen.send_signal"><code class="docutils literal notranslate"><span class="pre">Popen.send_signal()</span></code></a></li> <li><a class="reference internal" href="#gevent.subprocess.Popen.terminate"><code class="docutils literal notranslate"><span class="pre">Popen.terminate()</span></code></a></li> <li><a class="reference internal" href="#gevent.subprocess.Popen.wait"><code class="docutils literal notranslate"><span class="pre">Popen.wait()</span></code></a></li> </ul> </li> <li><a class="reference internal" href="#gevent.subprocess.call"><code class="docutils literal notranslate"><span class="pre">call()</span></code></a></li> <li><a class="reference internal" href="#gevent.subprocess.check_call"><code class="docutils literal notranslate"><span class="pre">check_call()</span></code></a></li> <li><a class="reference internal" href="#gevent.subprocess.check_output"><code class="docutils literal notranslate"><span class="pre">check_output()</span></code></a></li> <li><a class="reference internal" href="#gevent.subprocess.getoutput"><code class="docutils literal notranslate"><span class="pre">getoutput()</span></code></a></li> <li><a class="reference internal" href="#gevent.subprocess.getstatusoutput"><code class="docutils literal notranslate"><span class="pre">getstatusoutput()</span></code></a></li> <li><a class="reference internal" href="#gevent.subprocess.run"><code class="docutils literal notranslate"><span class="pre">run()</span></code></a></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>