Make a non-blocking request with requests when running Flask with Gunicorn and Gevent
<p>My Flask application will receive a request, do some processing, and then make a request to a slow external endpoint that takes 5 seconds to respond.  It looks like running Gunicorn with Gevent will allow it to handle many of these slow requests at the same time.  How can I modify the example below so that the view is non-blocking?</p>

<pre><code>import requests

@app.route('/do', methods = ['POST'])
def do():
    result = requests.get('slow api')
    return result.content
</code></pre>

<pre class="lang-none prettyprint-override"><code>gunicorn server:app -k gevent -w 4
</code></pre>

<p>If you're deploying your Flask application with gunicorn, it is already non-blocking. If a client is waiting on a response from one of your views, another client can make a request to the same view without a problem. There will be multiple workers to process multiple requests concurrently. No need to change your code for this to work. This also goes for pretty much every Flask deployment option.</p>

python flask python-requests gunicorn gevent