Frappe Async (node vs twisted/autobahn)


I browsed a bit the open-day slides and like the fact realtime API’s are in the roadmap. I really think this would benefit many parts of the ERPNext user experience.

One questions though. I see you’re looking at node.js here. I just want to drop a warm recommendation for good old twisted ( and for pure python websockets, the ultra stable and ultra tested (

  • First, it’s python (feels in line with frappe).
  • Second, my experience building things using twisted is that things runs for months to years without problems or restarts (so why look anywhere else).
  • Third, twisted is perfect for hardware integrations like very easily being able to deal with various interfaces like barcode readers via serial-ports, hooking up ethernet/IP based label-printers and so on.


  • It’s also perfect for building machine-to-machine bridges, say in case of “satellite installs” / some specific station in a workshop or factory that needs 2-way realtime sync with an ERPNext instance. A distributed state-machine using Twisted TCP-sockets (or websockets) doesn’t require many lines of code to get up and running.

  • If serious throughput & speed is needed, pypy is well tested with twisted & autobahn.

Just a thought!

@raveslave We did not evaluate Twisted, we tried to greenify Python but it was not very reliable. Also support for socketio was important.

I think Node has a lot going for it. Opens up possibility for website themeing on the fly using .less files or using node as a compiler for adding ReactJS components.

We are pretty close to releasing V6, testing it out right now.

What is node.js used for in Frappe? Why is needed?

Hi @petri
Frappe ships with an API for realtime events based on Since socket needs a Node server to run, we run a Node process in parallel to the main web server.
To understand more read this document Realtime (