[Twisted-web] Turkey Questions 1-5
Jp Calderone
exarkun at divmod.com
Thu Jul 7 19:00:54 MDT 2005
On Thu, 7 Jul 2005 16:03:31 -0400 (EDT), lloyd at paisite.com wrote:
>Hello,
>
>I've changed the thread from "Re: Introduction, newbie confusion plus an
>offer" to "Turkey Questions 1-5" to start the Q&A.
>
>Goal: Create the world's simplest web-server
>
>My first set of questions are based on "Configuring and Using the
>Twisted.Web Server in "Twisted.Web Documentation."
>
> [snip]
>
>Questions:
>
>1) Why did mktap write web.tap to my home directory rather than
>~/twisted/www?
You didn't specify a path to a tap file to write, so it picked a reasonable-seeming default. The surprisingly named --append option lets you specify the name of the tap to write (as well as letting you add a new application to an existing tap). For example,
mktap --append ~/twisted/www/web.tap web ...
> [snip]
>
>3) How can I see the source for the server created by mktap?
>
TAP stands for Twisted Application Pickle. Its contents are a Python pickle of a Twisted Application instance (twisted.application.service.Application) configured to do whatever you specified on the mktap command line.
You can inspect it using pickle interactively:
exarkun at boson:~$ python
Python 2.4.1 (#2, Mar 30 2005, 21:51:10)
[GCC 3.3.5 (Debian 1:3.3.5-8ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pickle
>>> app = pickle.load(file('web.tap', 'rb'))
>>> print app
<twisted.python.components.Componentized instance at 0xb7e05b8c>
>>> from twisted.application import service
>>> svc = service.IService(app)
>>> print svc
<twisted.application.service.MultiService instance at 0xb7e11d0c>
>>> list(svc)
[<twisted.application.service.MultiService instance at 0xb7ae126c>]
>>> list(svc)[0]
<twisted.application.service.MultiService instance at 0xb7ae126c>
>>> list(list(svc)[0])
[<twisted.application.internet.TCPServer instance at 0xb7a54d8c>]
>>> list(list(svc)[0])[0].args
(8080, <twisted.web.server.Site instance at 0xb7a5a66c>)
>>>
[etc]
There are some other formats mktap can write, but they are generally more fragile than pickle. If you want to explore, try the `--type' argument to mktap (eg, mktap --type source web).
The key here is that mktap outputs configuration, not code. Of course, if you asked "How can I view the configuration for the server generated by mktap?" I wouldn't have a better answer for you ;)
Jp
More information about the Twisted-web
mailing list