Hi everyone,
 
The answers are below
 
-- 
Kind regards, Roman Mescheryakov
 
 
19.02.2017, 02:21, "Jean-Paul Calderone" <exar...@twistedmatrix.com>:
On Sat, Feb 18, 2017 at 2:25 PM, Glyph Lefkowitz <gl...@twistedmatrix.com> wrote:
 
On Feb 2, 2017, at 1:17 AM, Роман Мещеряков <romanmescherya...@yandex.ru> wrote:
 
Hello everyone! I wrote Twisted-based TCP server which is capable of running in several relatively different modes. When mode switch is needed, I would like the server to restart itself by some means, for it to read new mode from configuration file and create corresponding implementation. Also I wanted the restart to occur without re-running twistd process, because it seems to me more appropriate for Linux daemon.
Hi Roman,
 
Sorry it took a while to get to this one :).
 
If your solution is working for you, then it's fine.  You've correctly understood the API associated with IServiceCollection and your implementation (at least at first glance, I don't have time to test it exhaustively :)) is correct.
 
However, there's a more philosophical question as well: if you really want to re-start from scratch, what exactly are you shutting down and starting up again?  Wouldn't you want to be able to load new code?  Simply stopping and starting objects won't re-initialize the process from the beginning, only from some indeterminate middle state where parts of the program are already set up; this doesn't have the usual desired effect of a "restart" where potentially unknown or buggy state is cleared away.
 
You may want to consider simply calling execv https://docs.python.org/2.7/library/os.html#os.execv with [sys.executable] + sys.argv rather than trying to do this in terms of Twisted's APIs.
 
You are right, Glyph, using os.execv would be more simple, reliable and straightforward way of achieving my goal. The only thing that bothers me due to lack of Linux experience: is it OK to os.execv inside daemon process? Because I run my process using twistd, not python directly.
 
 
Or better yet.  Don't be afraid to just exit.  Your process is being managed by a supervisor with a rich feature set - like easily controlled re-restart behavior, right (If not, what do you do when your daemon simply crashes)?
 

Well, in fact I'm in the development stage now and did't have time to deal with this question yet :) As of now I understand very little about daemons and their supervisors (I belive it is systemd for Raspbian...).
 
Jean-Paul and Glyph, thank you for guiding me in the right direction! :)
 
 
Jean-Paul
 
,

_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to