Provide an alternative to multivisor's supervisor RPC extension.
The implementation of multivisor's supervisor RPC extension is complex and prone to problems in the future.
The multivisor RPC uses zerorpc (which in turn uses gevent and a private implementation zeromq ); supervisor uses a concurrency model based on asyccore. Making the two work together is challenging (to say the least).
Some issues concern me:
when supervisor restart is called, it closes all file descriptors it has open as part of the cleanup. zeromq doesn't like this at all so a hack is injected in supervisor to prevent it from doing this. This is probably my main concern.
to make gevent and asyncore work together a OS thread had to be created which handles all zerorpc code. Having a new thread on what was by design a single threaded daemon breaks what I would call supervisor project principles. Also the thread had to be created as daemon thread to be sure supervisor would not hang at shutdown
With this PR I bring back an initial implementation which was to have the multivisor RPC as a supervisor event listener. For me this is the most elegant solution. It was removed because users of the project did not like to see in the GUI a lot of multivisor-rpc processes.
One solution could be to have a filter in multivisor.conf so these processes don't show up. If someone has a better solution please let me know.
Provide an alternative to multivisor's supervisor RPC extension.
The implementation of multivisor's supervisor RPC extension is complex and prone to problems in the future.
The multivisor RPC uses zerorpc (which in turn uses gevent and a private implementation zeromq ); supervisor uses a concurrency model based on asyccore. Making the two work together is challenging (to say the least).
Some issues concern me:
With this PR I bring back an initial implementation which was to have the multivisor RPC as a supervisor event listener. For me this is the most elegant solution. It was removed because users of the project did not like to see in the GUI a lot of multivisor-rpc processes. One solution could be to have a filter in
multivisor.conf
so these processes don't show up. If someone has a better solution please let me know.