Hi web2py users, I've been using web2py for a few months now, thank you to the developers for the great work.
I'm working on an interactive web based monitoring and control Application that communicates with ~30 mobile field units at a time to get periodic 'semi-realtime' status reports (2-5 second poll period) and allow the user to change settings of the field units on demand. The communications channel is using TCP sockets: the web2py workstation end is the TCP client and each field unit is running as a TCP server on an embedded low performance field unit. The front end is currently doing periodic Ajax polling every 2 seconds and updating the GUI. I also would like to support multiple web users connected to the Application on the front end. I've searched the mailing lists of web2py and other frameworks but could not find a use case similar to mine. There are many ways implementing this, it's not easy to figure out which is best and what pitfalls may lie ahead. Here are some of the approaches that I have considered: 1- Use a background asynchronous "Data Acquisition" task always running and fills a "RealTime" table in the database (by polling all field units every 2 seconds). For each web request, the controller would then pick up the latest values from the database and serve them up to Web clients without having to worry about pulling the data. The background task keeps the sockets open to improve performance. 2- The controller communicates with the ~30 field units directly, bypassing any database overhead. The controller needs a persistent reference to the 30 TCP sockets to make the comms faster. Is there a way to parallelize the TCP request/response in the request thread to communicate with ~30 units quickly? To handle multiple Web users, I can cache the controller function so that it doesn't run on every web client request. 3- Have web2py controller communicate with a separate data acquisition process via message queues. The web2py parts would never deal with the low level comms and the external data acquisition component would abstract all that. However, this is at the expense of having to create an external component and define the interface to it and adding a messaging framework between web2py and the data acquisition process. 4- Controller kicks off a worker thread that collects the field unit status. Controller function cached to avoid having a task for every web request. 5- Other ideas that might be better suited to this application? If anybody has gone through something similar, can you please help with your experience? If you see any issues or potential weaknesses in any of these approaches, your feedback would be greatly appreciated. Regards, Bernard -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.