Benchmark

For measure the performance, I used apache bench tool (ab) and httperf, with 1, 5 and 10 concurrent
clients making 1000 requests with keep-alive enabled.

Note: The results are average of multiple executions.

Req/s performance

Server

1 client

5 clients

10 clients

uWsgi+python3

235/s

315/s

323/s

uWsgi+python2

155/s

185/s

186/s

gunicorn+python3

137/s

137/s

137/s

gunicorn+python2

130/s

135/s

135/s

nodejs

330/s

375/s

375/s

Latency

Server

1 client

5 clients

10 clients

uWsgi+python3

4ms

15ms

30ms

uWsgi+python2

6ms

27ms

50ms

gunicorn+python3

7ms

35ms

72ms

gunicorn+python2

8ms

36ms

73ms

nodejs

2ms

13ms

27ms

Note: Additionally I've tested both: uwsgi with python3 and nodejs with a more clients
and its scales proportionally wery well, accepting same number requests per seconds and
increasing a response latency without any errors (tests up to 400 concurrent clients).

Conclusion

What I really wanted to see here is if python3 is a viable option for web and deny all of
the myths that python3 is slow.

With respect to the application server, uwsgi is clearly faster. I am sure that if testing it
in a more powerful environment, could be on par with nodejs performance.

In these tests nodejs clearly has better performance, but as Guido says, performance is
not always the most important.

I usually use gunicorn for its simplicity and simplicity. Gunicorn is not the fastest,
but in my opinon, in real applications, there are other major bottlenecks to solve,
before noting the bottleneck in wsgi server.