lpoll /

Filename Size Date modified Message
static
templates
1.4 KB
docs tweaked
2.5 KB
freshen docs and code style

This is an example of using the Flask web framework along with long-polling (aka Comet, aka reverse AJAX) techniques to update client state quasi-asynchronously without the benefit of direct WebSockets support. The server-side code runs in Python; the front-end Web page client runs in the browser (in JavaScript).

This is a "poor man's" form of interactivity. It's suitable if

  • refreshes are occasional,
  • the delays between updates many seconds long,
  • and updates are unidirectional server -> client (though bidirectionality can be kludged).

I've successfully used the technique in production apps, but it will become more-or-less obsolete as soon as quality support for WebSockets becomes simple and reliable.

As of Summer 2013, WebSockets with Python and Flask became reliable enough. flask-ws-example is an updated example that uses WebSockets and Flask.

Even as of mid-2017, Python's multi-threading support remains piecemeal. Projects like Jupyter show that WebSockets is fully feasible for sophisticated project teams. It remains slightly outside the grasp of a single, simple library and set of support modules that works across both Python 2.7 and Python 3.