Hi all,

Utter uwsgi newbie here. I'm running a uwsgi server in a JSON RPC client server architecture. Some of the calls can take a few minutes to complete, and the problem I'm having is that the client and server lose their connection after about a minute. The server continues to process the data for another 30s to a minute, writes the data to another server, and then gets a broken pipe when trying to write to the client. When I run the application with wsgiref.simple_server.make_server everything works correctly. Pertinent information is below:
_
uwsgi command line:_
uwsgi --master --processes 20 --cheaper 4 --gevent 5 --http :10001 --wsgi-file [file]

_bottom of the stack trace client side:_
/usr/lib/python2.7/httplib.pyc in _read_status(self)
    369             # Presumably, the server closed the connection before
    370             # sending a valid response.
--> 371             raise BadStatusLine(line)
    372         try:
    373             [version, status, reason] = line.split(None, 2)

BadStatusLine: ''

_Error in the server logs/std*:_
SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) on request / (ip 127.0.0.1) !!!
IOError: write error
[pid: 3138|app: 0|req: 1/1] 127.0.0.1 () {34 vars in 897 bytes} [Fri Feb 15 09:13:15 2013] POST / => generated 0 bytes in 44679 msecs (HTTP/1.1 200) 4 headers in 149 bytes (5 switches on core 4)

Obviously the client and server are on the same machine. I've tried running with -t at 0 and 300 and without gevent. Looking here: http://uwsgi-docs.readthedocs.org/en/latest/ThingsToKnow.html ...the most pertinent note seems to be:

If an HTTP request has a body (like a POST request generated by a form), you /have/ to read (consume) it in your application....

The method params are in JSON in the request body, so I presume the body is being consumed since the method is getting the params.

There's a brief (~5s) CPU spike during the method, usually to around 30-50% per top. Memory, as far as I can tell, never gets above 1%.

It's not clear to me what to do next to figure out why this is happening - it seems it must be related to the uwsgi container as the wsgiref container doesn't have this problem. Any advice would be appreciated.

Thanks, Gavin

_______________________________________________
uWSGI mailing list
[email protected]
http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi

Reply via email to