I would look at evserver (http://code.google.com/p/evserver/) if you need a comet.
It "supports a little-known extension to the asynchronous WSGI" and builds around libevent. Works like a charm and supports django. The actual handler code is a little ugly, but it scales well, as it is really asynchronous.
I used evserver, and now I'm going to the cyclone (tornado on a twisted), because I need a little more than evserver. I need a real bidirectional io (think socket.io (http://socket.io/)), and although evserver could support it, I thought it was easier to override tornado socket.io in a cyclone (I chose a cyclone instead of a tornado, since the cyclone is built on twisted, which allows you to use more transports that are not implemented in twisted (ic zeromq)). Socket.io supports web connectors, comet-style polling, and much more flash-based firewalls. I think that in most practical situations, websockets + flash-based websockets are enough to support 99% (according to adobe flash penetration about 99% (http://www.adobe.com/products/player_census/flashplayer/version_penetration.html )) visitors to websites (only people who do not use flash memory should lean back on one of the sockets. Its backup (less performance and resource))
Remember that websites are not http vehicles , so they put them in http-based proxies (like haproxy in http mode), breaking the connection. Better serve them on an alternative ip or port so that you can proxy the server in tcp mode (for example, haproxy in tcp mode).
To answer your questions: (1) If you don’t need bidirectional multithreading solutions, they are good enough (all they do is keep the connection open). Everything happens if you need your connection to be operational, or you need to be able to send and receive data. In the latter case, socket.io helps. However, for this scenario, websites are created and with flash support available for most websites (via socket.io or offline, however socket.io has the added benefit of backup transport for those people who do not want to install flash)
(2) if you just need to click, evserver is your best bet. It uses the same client-side javascripts as in orbit. Let's look at socket.io again (for this, you also need a supporting server, the only python available is tornado.)
(3) This is just one other server implementation. If I read it correctly, click only. pushing data to the client is done by installing http equest from your application to the nginx server. (nginx then makes sure they reach the client). If you are interested in this, look at mongrel2 (http://mongrel2.org/home), it has not only handlers for longpolling, but also for websockets. (Instead of making an http request to mongrel, this time you use zeromq handlers to receive data on your mongrel server) (note the lack of developer enthusiasm for websites and flash sites. Especially considering that websocket protocol tends to evolve, at some point you may need to transcode mongrel2 web wallpaper support with websockets support)
(4) All solutions except evserver replace wsgi with something else. Although most servers also have some wsgi support on this "something else". No matter which solution you choose, be careful that one intensive processor or another io lock request does not block the server. (you need either multiple instances or threads).
(5) Not very important. All decisions depend on some user agents to push (and, if applicable, receive) data to the client. All the solutions mentioned allow you to write these handlers in python. If you want to use a completely different structure (node.js), then you need to weigh the ease of node.js (it is considered simple, but it is also quite experimental, and I found very few libraries that are really stable) from the convenience of using your existing code base and available libraries (for example, if your application needs a blog, you will find many django diaries that you could connect, but not for node.js) Also, don’t look at yourself blindly about performance characteristics. if you don't plan on doing dumb predefined data (which is all tests) for the client, you will find that actual data processing adds a lot more overhead than even the worst asynchronous implementation. (But you still want to use a server based on an asynchronous kernel, if you plan to have many concurrent clients, streaming is simply not designed to save thousands of connections)
(6) websockets offer bidirectional communication, long polling / comet only pushes data, but does not accept records. (Socket.io simulates this bi-directional support using two HTTP requests, one for longpoll, one for sending data. It tracks their interdependence with an identifier (session), which is part of the request string of both requests). flash-based networks are similar to real web ports (the difference is that they are implemented in swf and not in your browser). Also, the websockets protocol does not comply with the http protocol; longpolling / comet stuff (technically, the websocket client sends an update request to the websocket server, the updated protocol is no longer http)