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

Drew Smathers drew.smathers at gmail.com
Tue Oct 14 11:18:50 MDT 2008


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,gid=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.




More information about the Twisted-Python mailing list