> On Feb 20, 2017, at 00:58, Роман Мещеряков <romanmescherya...@yandex.ru> 
> wrote:
> 
>  
> Hi everyone,
>  
> The answers are below
>  
> -- 
> Kind regards, Roman Mescheryakov
>  
>  
> 19.02.2017, 02:21, "Jean-Paul Calderone" <exar...@twistedmatrix.com 
> <mailto:exar...@twistedmatrix.com>>:
>> On Sat, Feb 18, 2017 at 2:25 PM, Glyph Lefkowitz <gl...@twistedmatrix.com 
>> <mailto:gl...@twistedmatrix.com>> wrote:
>>  
>>> On Feb 2, 2017, at 1:17 AM, Роман Мещеряков <romanmescherya...@yandex.ru 
>>> <mailto: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 
>> <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.

If you're actually daemonizing ('twistd' without '-n') then there might be a 
small issue.  However, a modern best practice is to never daemonize; this is 
why the new `twist` runner (which you should probably switch to) doesn't 
daemonize and expects your supervisor to handle backgrounding.

>>  
>> 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...).

Yes, systemd will do this.

> Jean-Paul and Glyph, thank you for guiding me in the right direction! :)
>  
>  

Happy to help!

-g

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