255 lines
16 KiB
HTML
255 lines
16 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
|
|
<title>Eventlet Documentation — Eventlet 0.21.0 documentation</title>
|
|
|
|
<link rel="stylesheet" href="_static/classic.css" type="text/css" />
|
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
|
|
|
<script type="text/javascript">
|
|
var DOCUMENTATION_OPTIONS = {
|
|
URL_ROOT: './',
|
|
VERSION: '0.21.0',
|
|
COLLAPSE_INDEX: false,
|
|
FILE_SUFFIX: '.html',
|
|
HAS_SOURCE: true,
|
|
SOURCELINK_SUFFIX: '.txt'
|
|
};
|
|
</script>
|
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
|
<link rel="index" title="Index" href="genindex.html" />
|
|
<link rel="search" title="Search" href="search.html" />
|
|
<link rel="next" title="Basic Usage" href="basic_usage.html" />
|
|
</head>
|
|
<body role="document">
|
|
<div class="related" role="navigation" aria-label="related navigation">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="genindex.html" title="General Index"
|
|
accesskey="I">index</a></li>
|
|
<li class="right" >
|
|
<a href="py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="right" >
|
|
<a href="basic_usage.html" title="Basic Usage"
|
|
accesskey="N">next</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="#">Eventlet 0.21.0 documentation</a> »</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="document">
|
|
<div class="documentwrapper">
|
|
<div class="bodywrapper">
|
|
<div class="body" role="main">
|
|
|
|
<div class="section" id="eventlet-documentation">
|
|
<h1>Eventlet Documentation<a class="headerlink" href="#eventlet-documentation" title="Permalink to this headline">¶</a></h1>
|
|
<p>Code talks! This is a simple web crawler that fetches a bunch of urls concurrently:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">urls</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="s2">"http://www.google.com/intl/en_ALL/images/logo.gif"</span><span class="p">,</span>
|
|
<span class="s2">"http://python.org/images/python-logo.gif"</span><span class="p">,</span>
|
|
<span class="s2">"http://us.i1.yimg.com/us.yimg.com/i/ww/beta/y3.gif"</span><span class="p">,</span>
|
|
<span class="p">]</span>
|
|
|
|
<span class="kn">import</span> <span class="nn">eventlet</span>
|
|
<span class="kn">from</span> <span class="nn">eventlet.green</span> <span class="kn">import</span> <span class="n">urllib2</span>
|
|
|
|
<span class="k">def</span> <span class="nf">fetch</span><span class="p">(</span><span class="n">url</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">urllib2</span><span class="o">.</span><span class="n">urlopen</span><span class="p">(</span><span class="n">url</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
|
|
|
|
<span class="n">pool</span> <span class="o">=</span> <span class="n">eventlet</span><span class="o">.</span><span class="n">GreenPool</span><span class="p">()</span>
|
|
<span class="k">for</span> <span class="n">body</span> <span class="ow">in</span> <span class="n">pool</span><span class="o">.</span><span class="n">imap</span><span class="p">(</span><span class="n">fetch</span><span class="p">,</span> <span class="n">urls</span><span class="p">):</span>
|
|
<span class="k">print</span><span class="p">(</span><span class="s2">"got body"</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">body</span><span class="p">))</span>
|
|
</pre></div>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="contents">
|
|
<h1>Contents<a class="headerlink" href="#contents" title="Permalink to this headline">¶</a></h1>
|
|
<div class="toctree-wrapper compound">
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="basic_usage.html">Basic Usage</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="basic_usage.html#primary-api">Primary API</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="basic_usage.html#greenthread-spawn">Greenthread Spawn</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="basic_usage.html#greenthread-control">Greenthread Control</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="basic_usage.html#patching-functions">Patching Functions</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="basic_usage.html#network-convenience-functions">Network Convenience Functions</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="design_patterns.html">Design Patterns</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="design_patterns.html#client-pattern">Client Pattern</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="design_patterns.html#server-pattern">Server Pattern</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="design_patterns.html#dispatch-pattern">Dispatch Pattern</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="patching.html">Greening The World</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="patching.html#import-green">Import Green</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="patching.html#monkeypatching-the-standard-library">Monkeypatching the Standard Library</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="examples.html#web-crawler">Web Crawler</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="examples.html#wsgi-server">WSGI Server</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="examples.html#echo-server">Echo Server</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="examples.html#socket-connect">Socket Connect</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="examples.html#multi-user-chat-server">Multi-User Chat Server</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="examples.html#feed-scraper">Feed Scraper</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="examples.html#port-forwarder">Port Forwarder</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="examples.html#recursive-web-crawler">Recursive Web Crawler</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="examples.html#producer-consumer-web-crawler">Producer Consumer Web Crawler</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="examples.html#websocket-server-example">Websocket Server Example</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="examples.html#websocket-multi-user-chat-example">Websocket Multi-User Chat Example</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="ssl.html">Using SSL With Eventlet</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="ssl.html#with-python-2-6">With Python 2.6</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="ssl.html#with-python-2-5-or-earlier">With Python 2.5 or Earlier</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="ssl.html#pyopenssl">PyOpenSSL</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="threading.html">Threads</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="threading.html#tpool-simple-thread-pool">Tpool - Simple thread pool</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="zeromq.html">Zeromq</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="zeromq.html#what-is-omq">What is ØMQ?</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="zeromq.html#api-documentation">API documentation</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="hubs.html">Understanding Eventlet Hubs</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="hubs.html#how-the-hubs-work">How the Hubs Work</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="hubs.html#more-hub-related-functions">More Hub-Related Functions</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="testing.html">Testing Eventlet</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="testing.html#doctests">Doctests</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="testing.html#standard-library-tests">Standard Library Tests</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="testing.html#testing-eventlet-hubs">Testing Eventlet Hubs</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="testing.html#writing-tests">Writing Tests</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="testing.html#coverage">Coverage</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="environment.html">Environment Variables</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="modules.html">Module Reference</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/backdoor.html"><code class="docutils literal"><span class="pre">backdoor</span></code> – Python interactive interpreter within a running process</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/corolocal.html"><code class="docutils literal"><span class="pre">corolocal</span></code> – Coroutine local storage</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/dagpool.html"><code class="docutils literal"><span class="pre">dagpool</span></code> – Dependency-Driven Greenthreads</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/dagpool.html#module-eventlet.dagpool">Module Contents</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/debug.html"><code class="docutils literal"><span class="pre">debug</span></code> – Debugging tools for Eventlet</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/db_pool.html"><code class="docutils literal"><span class="pre">db_pool</span></code> – DBAPI 2 database connection pooling</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/event.html"><code class="docutils literal"><span class="pre">event</span></code> – Cross-greenthread primitive</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/greenpool.html"><code class="docutils literal"><span class="pre">greenpool</span></code> – Green Thread Pools</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/greenthread.html"><code class="docutils literal"><span class="pre">greenthread</span></code> – Green Thread Implementation</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/pools.html"><code class="docutils literal"><span class="pre">pools</span></code> - Generic pools of resources</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/queue.html"><code class="docutils literal"><span class="pre">queue</span></code> – Queue class</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/semaphore.html"><code class="docutils literal"><span class="pre">semaphore</span></code> – Semaphore classes</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/timeout.html"><code class="docutils literal"><span class="pre">timeout</span></code> – Universal Timeouts</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/websocket.html"><code class="docutils literal"><span class="pre">websocket</span></code> – Websocket Server</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/wsgi.html"><code class="docutils literal"><span class="pre">wsgi</span></code> – WSGI server</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules/zmq.html"><code class="docutils literal"><span class="pre">eventlet.green.zmq</span></code> – ØMQ support</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="authors.html">Authors</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="authors.html#maintainer-i-e-who-to-hassle-if-you-find-bugs">Maintainer (i.e., Who To Hassle If You Find Bugs)</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="authors.html#original-authors">Original Authors</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="authors.html#contributors">Contributors</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="authors.html#linden-lab-contributors">Linden Lab Contributors</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="authors.html#thanks-to">Thanks To</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l1"><a class="reference internal" href="history.html">History</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="section" id="license">
|
|
<h2>License<a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h2>
|
|
<p>Eventlet is made available under the terms of the open source <a class="reference external" href="http://www.opensource.org/licenses/mit-license.php">MIT license</a></p>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="indices-and-tables">
|
|
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
|
|
<ul class="simple">
|
|
<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li>
|
|
<li><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></li>
|
|
<li><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
|
<div class="sphinxsidebarwrapper">
|
|
<h3><a href="#">Table Of Contents</a></h3>
|
|
<ul>
|
|
<li><a class="reference internal" href="#">Eventlet Documentation</a></li>
|
|
<li><a class="reference internal" href="#contents">Contents</a><ul>
|
|
<li><a class="reference internal" href="#license">License</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
|
|
</ul>
|
|
|
|
<h4>Next topic</h4>
|
|
<p class="topless"><a href="basic_usage.html"
|
|
title="next chapter">Basic Usage</a></p>
|
|
<div role="note" aria-label="source link">
|
|
<h3>This Page</h3>
|
|
<ul class="this-page-menu">
|
|
<li><a href="_sources/index.rst.txt"
|
|
rel="nofollow">Show Source</a></li>
|
|
</ul>
|
|
</div>
|
|
<div id="searchbox" style="display: none" role="search">
|
|
<h3>Quick search</h3>
|
|
<form class="search" action="search.html" method="get">
|
|
<div><input type="text" name="q" /></div>
|
|
<div><input type="submit" value="Go" /></div>
|
|
<input type="hidden" name="check_keywords" value="yes" />
|
|
<input type="hidden" name="area" value="default" />
|
|
</form>
|
|
</div>
|
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
|
</div>
|
|
</div>
|
|
<div class="clearer"></div>
|
|
</div>
|
|
<div class="related" role="navigation" aria-label="related navigation">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="genindex.html" title="General Index"
|
|
>index</a></li>
|
|
<li class="right" >
|
|
<a href="py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="right" >
|
|
<a href="basic_usage.html" title="Basic Usage"
|
|
>next</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="#">Eventlet 0.21.0 documentation</a> »</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="footer" role="contentinfo">
|
|
© Copyright 2005-2010, Eventlet Contributors.
|
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.
|
|
</div>
|
|
<script>
|
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
|
|
ga('create', 'UA-42952223-1', 'eventlet.net');
|
|
ga('send', 'pageview');
|
|
</script>
|
|
|
|
</body>
|
|
</html> |