I am very exited by this project and will offer all the help I can. Feel free to contact me personally.
In principle you can use any web framework to control background demons but I would consider yours a mission critical operation there I think it is important to keep it simple and it keep it decoupled so if the web app crashes the demons do not. Yes web2py has a scheduler and Django has django-celery. They serve the same purpose but come from two different prospectives. the web2py scheduler assume that the communication between the web app and the tasks is light compared to the time to execute tasks. Therefore this communication is carried on using the database. Django-celery assumes the opposite (very high concurrency) therefore it improves the communication of the web app and tasks using celery. In my opinion the latter does not buy you anything because one user will control the satellite at the time. It is not a high concurrency system with many clients. Perhaps many tasks but not many clients. django-celery will increase complexity with not real advantage to you. Given that. it is not obvious to me that any of the two systems are what you want. The reason is you do not execute many tasks that have a beginning and end are autonomous. Your tasks are daemons which may need to receive and return information to the caller without stopping. Moreover your demons are mission critical and you want to decouple them as much as possible from the web application. I would suggest the following architecture. Give each of your demon a separate thread that exposes it primary functions via a Python xmlrpc services. this is easy and I can send you examples. It should expose functions to set the state and get the state. Have the demons log everything on files and expose a functions to retrieve the log data from a given timestamp. All the webapp needs to do is call those XMLRPC functions. Use the database at the webapp level to keep a record of which functions were called and their output. Use a os tool (monit or something else) to monitor and restart the demons. Your architecture will be very simple and foolproof and any component can go down without comprising the rest. Massimo On Saturday, 27 September 2014 03:40:27 UTC-5, Frank Olaf Sem-Jacobsen wrote: > > Hi everyone, > > I'm researching different Python Web frameworks in order to find the > perfect solution for building a simple satellite control centre. Such an > application places large demands on the ability to schedule and manage > background tasks to communicate with the satellite, monitor the operation > of such tasks to ensure that everything is working as it should, and > overall stability of the system. > > I'm looking at a web framework since I want to have it easy to use for the > operators. We're multiple operators, and having everyone using a single > stand-alone operation application or individual applications on their own > systems is quite cumbersome and difficult to synchronise. I believe that a > web application solution should allow me detailed control over the > satellite control centre software with an easily accessible user interface. > > What I'm looking for is a web framework that allows me to operate two > components: a daemon that communicates with the rest of the satellite > software (upload control commands, upload schedules, download files, > monitor telemetry), and a web front end to communicate with the daemon. As > far as I can see from the web2py documentation there is good support for > running background tasks which is critical for my application. It is > crucial that such a background task has access to all information stored by > the Web application (satellite schedules, configurations, et cetera). I'm > looking for a relatively compact solution so I do not have to maintain a > lots of different software to have everything working. > > For a simple operating example, consider having to upload scheduled > commands whenever the satellite is visible, while at the same time forking > out a separate thread to handle data download and processing to be > funnelled through to an external system. At the same time it should be > possible to upload real-time commands from the interface when the satellite > is visible for debugging and disaster recovery. > > As it stands now I think the choice is between web2py and django with > celerey. > > Based on this very brief summary of my requirements, do you have any > comments on the suitability of web2py to satisfy my needs? There is a huge > amount of Python Web application frameworks to choose from, and it is > important that I choose something that I can live with for a long time > since I have limited development resources (meaning that I cannot try out > several frameworks to see which I like best). > > Your input is appreciated. > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- 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 [email protected]. For more options, visit https://groups.google.com/d/optout.

