[Twisted-Python] How to make twistd print to stdout

Alec Matusis matusis at yahoo.com
Tue Oct 14 18:10:23 EDT 2008


> You want to print to stdout before you become a daemon - in
> makeService(), rather than startService(), for example.  A unix daemon
> should attach stdin, stdout, stderr to /dev/null.

I am not sure still how to do it:
When I run 

twistd --python=serv.py --logfile=serv.log

anything that I put in serv.py is executed after the process has already been daemonized: even if I print or sys.stdout on the first line in serv.py file, the output never goes into stdout.

> -----Original Message-----
> From: twisted-python-bounces at twistedmatrix.com [mailto:twisted-python-
> bounces at twistedmatrix.com] On Behalf Of Drew Smathers
> Sent: Tuesday, October 14, 2008 10:19 AM
> To: Twisted general discussion
> Subject: Re: [Twisted-Python] How to make twistd print to stdout
> 
> On Mon, Oct 13, 2008 at 10:49 PM, Alec Matusis <matusis at yahoo.com>
> wrote:
> > I have an application that is start from a command line by a shell
> script
> > that has this:
> >
> > /usr/local/bin/twistd --no_save --reactor=epoll --
> pidfile=logs/serv.pid
> > --logfile=logs/serv.log --python=serv.py
> >
> > serv.py:
> >
> > application =
> >
> twisted.application.service.Application('serv',uid=config.server_uid,gi
> d=con
> > fig.server_gid)
> >
> > my_service = service.MyService()
> > my_service.setServiceParent(application)
> >
> > .
> >
> >
> > In MyService class I have:
> >
> > def startService(self):
> >        if bad_config_file:
> >                #I want to print to stdout here end quit immediately??
> >                twisted.internet.reactor.callLater(0,
> > twisted.internet.reactor.stop)
> >
> >
> > I cannot force twistd to print to stdout after that comment line,
> probably
> > because it's daemonized by then.
> > print 'bad error' writes it to --logfile=logs/serv.log
> > I tried sys.stdout/stderr.write('bad error') - it's not written
> anywhere,
> > not even to the logfile.
> > sys.exit('bad error') exits, but does not print anywhere either.
> >
> > How do I make it print to stdout?
> >
> >
> 
> You want to print to stdout before you become a daemon - in
> makeService(), rather than startService(), for example.  A unix daemon
> should attach stdin, stdout, stderr to /dev/null.
> 
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python





More information about the Twisted-Python mailing list