I have a Django site which I am trying to server via uWSGI. I have started the server like so:

uwsgi --emperor .
Ctrl+Z
bg 1

(There are two .ini files which point to the test version and production version of the site, serving on 9001 and 9002 respectively)

I then attempt to get my site:

curl http://localhost:9002

When I do that, I get a message saying the the vassel is loyal but no actual response. The uwsgi.log then contains the following:

[pid: 5071|app: 0|req: 2/2] 127.0.0.1 () {26 vars in 357 bytes} [Tue Jul 23 13:20:21 2013] GET / => generated 0 bytes in 1 msecs (HTTP/1.1 302) 2 headers in 96 bytes (1 switches on core 1)

No errors are logged.

I should say, this worked fine prior to a reboot so the uwsgi.ini files should be fine.

Any ideas where I should start diagnosing this?

  • I can report a similar issue but with an even more basic configuration. Headers are sent properly, but the response body is simply empty. I experience this with Python 3.4 both uWSGI and gunicorn. – Dakota Mar 29 '14 at 19:22
  • tail the uwsgi log and read it very carefully, its a verbose annoyance but I was able to eventually track down my issue, I was missing the plugin = python3 stanza from my uwsgi vassal's ini, Which in turn meant my python3 django project wasn't actually being loaded or run correctly, – ThorSummoner Oct 3 '15 at 8:26

I had the some problem, it turned out that my wsgi application was returning UNICODE instead of BYTE STRINGS (I was on python3) ; and nothing showed in logs about it... WSGI expects byte strings in output, never unicode.

In the callable of your application instead of return "string" you should use return b"string" or return "string".encode("utf-8")

def application(env, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    # One of the below can be used.
    return "string".encode("utf-8")
    return b"string"

You can check http://uwsgi-docs.readthedocs.io/en/latest/Python.html#python-3 out for more informaiton on using uwsgi with python3.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.