<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif; "><div>Eck, I don't think a lot of deployment happens in a virtualenv (not 100% on this), a lot of people seem to like packages on real/vm hardware since openstack 'controls' a lot of the 'real hardware' in a way that venv doesn't 'hide' to well (if at all). </div><div><br></div><div>Yes it seems like u could use 'venv' to detect that eventlet is not installed via the installed site-packages, but I don't think this should be a deployment requirement when u need this kind of separation, a config setting seems applicable for those that want to use eventlet, or eventlet + venv, or no eventlet…</div><div><br></div><span id="OLK_SRC_BODY_SECTION"><div style="font-family:Calibri; font-size:11pt; text-align:left; color:black; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt"><span style="font-weight:bold">From: </span> Dolph Mathews <<a href="mailto:dolph.mathews@gmail.com">dolph.mathews@gmail.com</a>><br><span style="font-weight:bold">Reply-To: </span> OpenStack Development Mailing List <<a href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</a>><br><span style="font-weight:bold">Date: </span> Wednesday, November 7, 2012 12:43 PM<br><span style="font-weight:bold">To: </span> OpenStack Development Mailing List <<a href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</a>><br><span style="font-weight:bold">Subject: </span> Re: [openstack-dev] Dealing with Popen and Eventlet<br></div><div><br></div><div><div>
The naive approach (if eventlet is available, use it) just seems to reinforce that running in apache vs eventlet is a deployment issue (e.g. don't install eventlet, run in a virtualenv, etc).
<div class="gmail_extra"><br clear="all"><div><br></div>
-Dolph<br><br><br><div class="gmail_quote">On Wed, Nov 7, 2012 at 12:34 PM, Adam Young <span dir="ltr">
<<a href="mailto:ayoung@redhat.com" target="_blank">ayoung@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 11/07/2012 02:52 AM, Vishvananda Ishaya wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Nov 2, 2012, at 6:40 PM, Adam Young <<a href="mailto:ayoung@redhat.com" target="_blank">ayoung@redhat.com</a>> wrote:<br><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Since Eventlet is based on continuations instead of threads or processes, any call that blocks is going to lock up the webserver. That is any I/O at all.  Thus, when trying to figure out how best to call the OpenSSL functions from Eventlet, I settled on what
 I thought would be the best tested approach: spin it off as a separate process.  And it seemed to work.<br><br>
Well, it doesn't work.  The Eventlet library does not properly Monkey patch the subprocess calls from Python.  While this is something we should patch upstream in Eventlet,  we need something to deal with the existing Eventlet library for Grizzly development.<br><br>
I've been trying to make it possible to run Keystone (and the other services eventually) in Apache.  Thus, the simple solution of replacing<br><br>
import subprocess<br><br>
with<br><br>
import eventlet.green.subprocess<br><br>
Won't work.  It solves the problem in Eventlet, but not apache.<br></blockquote>
Why not just do the standard<br><br>
try:<br>
   from eventlet.green import subprocess<br>
except ImportError:<br>
   import subprocess<br><br>
We've used that in various places in nova before.<br></blockquote><br></div>
That logic is incorrect.  That  that logic is "if eventlet is available, use it." If you are trying to run Keystone in HTTPD, but eventlet happens to be installed because you are running say, nova on the same server, it will pick up eventlet from the site-libs.
 Thus, the logic we want is "If you are running in an eventlet server, use the eventlet subprocess."  A good rule of thumb is that the eventlet code should not be referenced from any files except those that explicitly choose to run eventlet.  In Keystone, that
 is the server.
<div class="HOEnZb"><div class="h5"><br><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Vish<br><br><br>
______________________________<u></u>_________________<br>
OpenStack-dev mailing list<br><a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.<u></u>org</a><br><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-dev</a><br></blockquote><br><br>
______________________________<u></u>_________________<br>
OpenStack-dev mailing list<br><a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.<u></u>org</a><br><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-dev</a><br></div></div></blockquote></div><br></div></div></div></span></body></html>