<div dir="ltr"><p dir="ltr">On Tuesday, October 14, 2014, Robert Collins <<a href="mailto:robertc@robertcollins.net" target="_blank">robertc@robertcollins.net</a>> wrote:<br></p>
<blockquote><p dir="ltr">On 14 October 2014 01:18, Benoit Chesneau <<a href="mailto:bchesneau@gmail.com" target="_blank">bchesneau@gmail.com</a>> wrote:<br></p>
<p dir="ltr">>> C - Support for chunked uploads, comet, bosh and websockets is<br>
>> effectively impossible within WSGI - one ends up writing server<br>
>> specific code, and being tied to a single server - even though<br>
>> multiple servers support (some of) those things. This defeats the<br>
>> point of WSGI IMNSHO: its not that WSGI is broken or anything, its<br>
>> just that we're once again writing all our generic middleware in<br>
>> server-specific fashions. Because the world has moved on and we<br>
>> haven't.<br>
><br>
><br>
> Chunkedn upload is possible and already handled with Gunicorn. But there is<br>
> no standard for that.</p>
<p dir="ltr">Right. Thus we need one.</p>
<p dir="ltr">> For C I would separate it from the rest. This a different discussion and imo<br>
> not everything can be achieved at the same time. Maybe we should start first<br>
> by fixing them, then go for the next step anyway. So the transition could be<br>
> incremental in servers and frameworks and actually fix the current spec.</p>
<p dir="ltr">What makes C a different discussion?</p>
<p dir="ltr">><br>
> For A (And C), i think we should keep the new specification enough agnostic.<br>
> Especially since HTTP 2 is not yet completely out.</p>
<p dir="ltr">HTTP/2 is in last call stage: it will be entirely finished by the time<br>
we get through whatever process we have here.</p>
<p dir="ltr">What do you want to see changed in the process I'm following?</p>
<p dir="ltr">-Rob</p>
</blockquote>
<p dir="ltr"><br></p>I meant there are 2 separate problems: fixing the current spec, and extend it **if** needed to handle the new web patterns. I am speaking more about patterns than protocols. Protocol is one thing to take in consideration of course, but actually if we redefining a  spec to build (server) and interact with (apps) a gateway for the web it will be more than simply handling HTTP 2 and soon HTTP 2.1 or 3 depending on the discussions.<br><br>On the server started I started recently a redesign of the core of Gunicorn to prepare it tfor this pattern and beeing able to handle the different challengenns they gives. I actually identified some common features and distinct features.<br><br><br>In term of patterns we have the following:<br><br>- start a response: detect the protocol, eventually *upgrade* it to a new protocol (HTTP -> Websockets or HTTP2 -> HTTP 1.1)<div>- send/receive headers</div><div>- PUSH pattern: HTTP 2,  new  PUSH specifcations from W3C, SSE<br>- ASYNC pattern: HTTP 2 and Websockets, receiving and sending can happen at different time and on the long term<br>- Continuous connections: keepalive, HTTP 2 channels, websockets, SSE  (how do we keep/identify connections states)</div><div>- Streaams: chunked encoding,  http 2 channels, ... We should have a  clear way to notify the application about it.<br><br>Also the spec/the server should have a standard way to handle the different async frameworks not based on threads like gevent, eventlet.<br><br>The application should also be able to tell to the server that an operation will take a long time and  let the server take appropriate actions. Some kind of reply/no_reply pattern allowing to answer later and  switch to an async pattern on the fly if the server support it. It would allows the servers to handle more gracefully some common issues like long queries when the application knows about them.</div><div><br>Since there is a concensus on using the github tracker, should i open a tickets for these different things? Or one generic? Let me know.<br><br><br>- benoit<p dir="ltr"><br></p><p dir="ltr"><br></p><p dir="ltr"><br></p>
<blockquote><p dir="ltr"><br>
--<br>
Robert Collins <<a href="mailto:rbtcollins@hp.com" target="_blank">rbtcollins@hp.com</a>><br>
Distinguished Technologist<br>
HP Converged Cloud<br>
</p>
</blockquote>
</div></div>