Frank Millman wrote:

Hi all

I have a question about wsgi.

As far as I can tell from the spec and from the reference implementation, wsgi requires that each request from the client is responded to by one or more headers, followed by the response body. It is then ready to handle the next request.

99% of the time this is fine, but I have a situation where I need to vary this, and I cannot see how to do it. Here is the scenario.

I am dabbling with writing an ajax-style app. On occasion, I want to send more than one message from the client to the server. It is important that the server processes the messages in the same order that they are generated. I have found that the Safari browser does not always send them in the correct sequence.

I found an article on the subject -

http://www.sitepen.com/blog/2009/02/27/deterministic-clientserver-interaction/

It explains that you can never guarantee that the messages will arrive in the same order, with *any* browser. Maybe I was lucky with the other ones. It goes on to say that, if the order is important, you must include a header with a sequential counter, and the server must check the sequence. If received out of sequence, it must queue the one received, wait for the correct one, and then process them both in the correct order.

So the question is, how can I achieve this with wsgi? If I detect that I have received a request out of sequence, I can queue the request, and send an empty response. When I receive the correct request, I can process it, call start_response(), and return the response body, but I cannot figure out how to get back to process the queued request.


As both client and server are under my control, I have realised that there is a simple solution.

On the client side, if there is more than one message to be sent, I pack them into an array, and send them in one request. The server receives the request, unpacks the array, and processes each message in turn.

It should work reliably, and I save a round-trip into the bargain.

Thanks for the replies - they all help in getting the little grey cells working.

Frank


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to