[Twisted-Python] How to exit a twistd program with a status code ?
Paul Goins
general at vultaire.net
Fri Sep 24 07:39:23 MDT 2010
I'd like to add my two cents here; maybe this may be valuable to someone.
I might suggest, if reasonable, to allow for running the app with or
without twistd. twistd is really handy for
profiling/debugging/daemonizing/etc., but it does lack in other areas
such as command line args and (new to me) return codes.
The last few apps I've done, I've set up a standard Python entry point like:
#!/usr/bin/env python
from twisted.internet import reactor
from myapp import main
if __name__ == "__main__":
# For quick/easy logging when running undaemonized
log.startLogging(sys.stdout)
reactor.callWhenRunning(main)
reactor.run()
Along with something for creating the application object in .tac files:
from twisted.application.service import Application
from twisted.internet import reactor
from twisted.python.syslog import SyslogObserver
from myapp import main
def create_application():
app = Application("foo")
# More robust logging for daemonized (production) mode
observer = SyslogObserver("bar")
app.setComponent(ILogObserver, observer.emit)
reactor.callWhenRunning(main)
return app
And then, you end up with possibly a really simple .tac file:
import myapp.tacapp
application = myapp.tacapp.create_application()
That seems to give the best of both worlds from what I've seen. Haven't
seen any key drawbacks yet.
- Paul Goins
More information about the Twisted-Python
mailing list