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. > 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*)? Jean-Paul
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python