<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;"><br><div><div>On Feb 7, 2014, at 10:25 AM, Yuriy Taraday <<a href="mailto:yorik.sar@gmail.com">yorik.sar@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><div class="gmail_extra">Hello, Vish!</div><div class="gmail_extra"><br></div><div class="gmail_extra">I hope you can provide some historical data.<br><br><div class="gmail_quote">On Fri, Feb 7, 2014 at 9:37 PM, Vishvananda Ishaya <span dir="ltr"><<a href="mailto:vishvananda@gmail.com" target="_blank">vishvananda@gmail.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

To be clear, since many people weren’t around in ye olde days, nova started using tornado. We exchanged tornado for twisted, and finally moved to eventlet. People have suggested gevent and threads in the past, and now asyncio. There are advantages to all of these other solutions, but a change at this point is going to be a huge pain, even the abstracting one you mention above.<br>

</blockquote><div><br></div><div>Can you remember what were pros and cons for threads in that time? Did anyone consider using external HTTP server as opposed to running one in process?</div></div></div></div></blockquote><div><br></div>We didn’t get far with the thread discussion just because it was a large change. People have threatened to prototype picking one of the workers (say nova-compute) and try to convert it to threads, but I think it was just manpower limitations and trepidation around the amount of work needed based on experience around tornado/twisted<br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


If we are going to invest the time in making another change, I think we need a REALLY good reason to do so. Some reasons that might be good enough to be worth considering:<br>
<br>
a) the cost of porting the library to a maintained python version (3.X at some point) is greater than replacing it with something else<br></blockquote><div><br></div><div>I think, eventlet hits this one. </div></div></div></div></blockquote><div><br></div>It may for sure. But the solution here could be to forward port eventlet or to port eventlet on top of the asyncio reactor.</div><div><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> </div>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
b) the performance of the other option is an order of magnitude better. I’m really talking 10X here.<br></blockquote></div><div class="gmail_extra"><br></div><div>Will you consider other technological benefits? For example, as it happened with Keystone and Apache HTTPD (IPv6, HTTP/1.1, Kerberos).</div></div></div></blockquote><div><br></div><div>Oh sure, I wasn’t saying that those are the ONLY good reasons, I was just saying that we need reasons that good.</div><div><br></div><div>Vish</div><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra">

<div><br></div>-- <br><br><div>Kind regards, Yuriy.</div>
</div></div>
_______________________________________________<br>OpenStack-dev mailing list<br><a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev<br></blockquote></div><br></body></html>