Application
Twisted programs usually work with
twisted.application.service.Application
.
This class usually holds all persistent configuration of
a running server -- ports to bind to, places where connections
to must be kept or attempted, periodic actions to do and almost
everything else. It is the root object in a tree of services implementing
IService
.
Other HOWTOs describe how to write custom code for Applications,
but this one describes how to use already written code (which can be
part of Twisted or from a third-party Twisted plugin developer). The
Twisted distribution comes with an important tool to deal with
Applications, twistd
.
Application
s are just Python objects, which can
be created and manipulated in the same ways as any other object.
twistd
The Twisted Daemon is a program that knows how to run Applications.
This program
is twistd(1)
. Strictly
speaking, twistd
is not necessary --
fetching the application, getting the IService
component,
calling startService
, scheduling stopService
when
the reactor shuts down, and then calling reactor.run()
could be
done manually. twistd(1)
, however, supplies
many options which are highly useful for program set up.
twistd
supports choosing a reactor (for more on
reactors, see Choosing a Reactor), logging
to a logfile, daemonizing and more. twistd
supports all
Applications mentioned above -- and an additional one. Sometimes
it is convenient to write the code for building a class in straight
Python. One big source of such Python files is the doc/examples
directory. When a straight Python file which defines an Application
object called application
is used, use the -y
option.
When twistd
runs, it records its process id in a
twistd.pid
file (this can be configured via a command line
switch). In order to shutdown the twistd
process, kill that
pid (usually you would do kill `cat twistd.pid`
).
As always, the gory details are in the manual page.
tap2deb
For Twisted-based server application developers who want to deploy on
Debian, Twisted supplies the tap2deb
program. This program
wraps a Twisted Application file (of any of the supported formats -- Python,
source, xml or pickle)
in a Debian package, including correct installation and removal scripts
and init.d
scripts. This frees the installer from manually
stopping or starting the service, and will make sure it goes properly up
on startup and down on shutdown and that it obeys the init levels.
For the more savvy Debian users, the
tap2deb
also generates the source package, allowing her
to modify and polish things which automated software cannot detect
(such as dependencies or relationships to virtual packages). In addition,
the Twisted team itself intends to produce Debian packages for some common
services, such as web servers and an inetd replacement. Those packages
will enjoy the best of all worlds -- both the consistency which comes
from being based on the tap2deb
and the delicate manual
tweaking of a Debian maintainer, insuring perfect integration with
Debian.
Right now, there is a beta Debian archive of a web server available at Moshe's archive.
tap2rpm
tap2rpm
is similar to tap2deb
, except that
it generates RPMs for Redhat and other related platforms.