9

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?

d4nt
  • 265

1 Answers1

8

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.

PKL
  • 81