[Answer]-How to avoid polling a django/python web server?

1👍

Fundamentally web sockets, part of HTML5, were design for this purpose, ie bi-directional communication between clients and servers through the http protocol, while its being highly talked about few application servers have implemented and even fewer http servers have actually even began supporting it.

While there are some packages:

  • django-websocket
  • django-socketio
  • that have enabled it in django, they don’t do anything about your http server, very rarely if ever do you use django standalone, this is because django isn’t very efficient for distributing static content such as images or any other static files, as well as distribute work load, we rely on things like nginx, apache and such things for this. unfortunately they don’t support web sockets, yet, as such they tend to break the communication between the client and the application server even if its initiated in the first place, depending on implementation.

    From my own personal experience nginx would break the communication after 60 seconds since this was the default allotted time for anything open.

    As far as I know node.js maybe the best server, currently, for working with web sockets.

    Depending on what you are tying to achieve and If regular polling seems in efficient you can try long-polling, basically the connection is held open, until theres new data to be pushed back unto the client vs regular polling, which is done at some interval, note that you may have to configure your http server not to terminate pro-long open connections and run django multithreaded, since each connection will use an instance.

    Leave a comment