[Twisted-web] Can someone translate this, please?

Alex Levy twisted-web@twistedmatrix.com
Tue, 24 Feb 2004 14:28:54 -0500


--=-F8H6FFhWXt+SqTfvayXY
Content-Type: multipart/mixed; boundary="=-8I/WDEz3aO5JtB11WODI"


--=-8I/WDEz3aO5JtB11WODI
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

On Tue, 2004-02-24 at 13:35, Phil Hunt wrote:
> I am trying to get my head round Twisted, particularly to use it as a=20
> simple web server (using http as a RPC mechanism, really). I was thinknig
> of using a "Rosetta Stone" approach, and am wondering if someone could=20
> translate this ordinary Python program into Twisted, please:

Attached are two examples of what you've described, both of which are a
lot easier on the eyes than SimpleHTTPServer code.

rosetta1 just uses twisted.web's Resource object, which is relatively
basic in its capabilities. If you want more scalable and flexible
templating and web application design, you might want to start working
with Nevow, which is what rosetta2 demonstrates.

Both of these scripts should be run using the following command:

$ twistd -ony rosettaX.tac.py

Hope this helps.

--=20
Alex Levy
WWW: http://mesozoic.geecs.org

"Never let your sense of morals prevent you from doing what is right."
-- Salvor Hardin, Isaac Asimov's _Foundation_


--=-8I/WDEz3aO5JtB11WODI
Content-Disposition: attachment; filename=rosetta1.tac.py
Content-Transfer-Encoding: base64
Content-Type: text/x-python; name=rosetta1.tac.py; charset=iso-8859-1

ZnJvbSB0d2lzdGVkLmFwcGxpY2F0aW9uLnNlcnZpY2UgaW1wb3J0IEFwcGxpY2F0aW9uDQpmcm9t
IHR3aXN0ZWQuYXBwbGljYXRpb24gaW1wb3J0IHN0cnBvcnRzDQpmcm9tIHR3aXN0ZWQud2ViIGlt
cG9ydCBzZXJ2ZXIsIHJlc291cmNlDQoNCmNsYXNzIE15UmVzb3VyY2UocmVzb3VyY2UuUmVzb3Vy
Y2UpOg0KICAgIGRlZiBnZXRDaGlsZChzZWxmLCBuYW1lLCByZXF1ZXN0KToNCiAgICAgICAgIyBJ
ZiB0aGlzIHJlc291cmNlIGlzIGxvY2F0ZWQgYXQgL2ZvbywgYW5kIHRoZSB1c2VyIHJlcXVlc3Rz
IC9mb28vYmFyLA0KICAgICAgICAjIGl0IGlzIHVwIHRvIGdldENoaWxkKCdiYXInKSB0byBmaWd1
cmUgb3V0IHdoYXQgcmVzb3VyY2UgdG8gZGlzcGxheS4NCiAgICAgICAgIyBUaGlzIHRlbGxzIHRo
ZSB3ZWIgc2VydmVyIHRoYXQgbm8gbWF0dGVyIHdoYXQgY2hpbGQgd2UgbWlnaHQgbmVlZCwNCiAg
ICAgICAgIyB3ZSB3YW50IHRoaXMgcmVzb3VyY2UgdG8gYWx3YXlzIHJldHVybiBpdHNlbGYuDQog
ICAgICAgIHJldHVybiBzZWxmDQogICAgDQogICAgZGVmIHJlbmRlcihzZWxmLCByZXF1ZXN0KToN
CiAgICAgICAgcmVzdWx0ID0gJycnDQogICAgICAgIDxodG1sPg0KICAgICAgICA8cD5IZWxsbywg
d29ybGQhPC9wPg0KICAgICAgICA8cD5yZXF1ZXN0LnBhdGggPSAlczwvcD4NCiAgICAgICAgPC9o
dG1sPg0KICAgICAgICAnJycgJSByZXF1ZXN0LnBhdGgNCiAgICAgICAgcmV0dXJuIHJlc3VsdA0K
DQojIGNyZWF0ZSB0aGUgYWxsLWVuY29tcGFzc2luZyBhcHBsaWNhdGlvbiBvYmplY3QNCmFwcGxp
Y2F0aW9uID0gQXBwbGljYXRpb24oJ3Jvc2V0dGExJykNCg0KIyBjcmVhdGUgb3VyIHdlYiBzaXRl
DQpzaXRlID0gc2VydmVyLlNpdGUocmVzb3VyY2U9TXlSZXNvdXJjZSgpKQ0KDQojIGNyZWF0ZSBh
IHNlcnZpY2UgY29udGFpbmluZyBvdXIgd2ViIHNpdGUgYW5kIGxpc3RlbmluZyBvbiBUQ1AgcG9y
dCAxNDUwDQpzdmMgPSBzdHJwb3J0cy5zZXJ2aWNlKCd0Y3A6MTQ1MCcsIHNpdGUpDQpzdmMuc2V0
U2VydmljZVBhcmVudChhcHBsaWNhdGlvbikNCg==

--=-8I/WDEz3aO5JtB11WODI
Content-Disposition: attachment; filename=rosetta2.tac.py
Content-Transfer-Encoding: base64
Content-Type: text/x-python; name=rosetta2.tac.py; charset=iso-8859-1

ZnJvbSB0d2lzdGVkLmFwcGxpY2F0aW9uLnNlcnZpY2UgaW1wb3J0IEFwcGxpY2F0aW9uDQpmcm9t
IHR3aXN0ZWQuYXBwbGljYXRpb24gaW1wb3J0IHN0cnBvcnRzDQpmcm9tIG5ldm93IGltcG9ydCBh
cHBzZXJ2ZXINCmZyb20gbmV2b3cgaW1wb3J0IGluZXZvdw0KZnJvbSBuZXZvdyBpbXBvcnQgcmVu
ZA0KDQp0ZW1wbGF0ZSA9ICcnJw0KPGh0bWw+DQo8cD5IZWxsbyB3b3JsZCE8L3A+DQo8cD4NCiAg
cmVxdWVzdC5wYXRoID0NCiAgPHNwYW4gbmV2b3c6ZGF0YT0icmVxdWVzdF9wYXRoIiBuZXZvdzpy
ZW5kZXI9InN0cmluZyI+SSB3aWxsIHZhbmlzaDwvc3Bhbj4NCjwvcD4NCjxwPg0KICBkaXIoY29u
dGV4dCkgPQ0KICA8c3BhbiBuZXZvdzpyZW5kZXI9ImNvbnRleHRfY29udGVudHMiPkkgd2lsbCBh
bHNvIHZhbmlzaDwvc3Bhbj4NCjwvcD4NCjwvaHRtbD4NCicnJw0KDQpjbGFzcyBNeVBhZ2UocmVu
ZC5QYWdlKToNCiAgICBkb2NGYWN0b3J5ID0gcmVuZC5odG1sc3RyKHRlbXBsYXRlKQ0KDQogICAg
ZGVmIGxvY2F0ZUNoaWxkKHNlbGYsIG5hbWUsIHNlZ21lbnRzKToNCiAgICAgICAgcmV0dXJuIHNl
bGYsIHNlZ21lbnRzWzE6XQ0KDQogICAgZGVmIGRhdGFfcmVxdWVzdF9wYXRoKHNlbGYsIGNvbnRl
eHQsIGRhdGEpOg0KICAgICAgICByZXF1ZXN0ID0gY29udGV4dC5sb2NhdGUoaW5ldm93LklSZXF1
ZXN0KQ0KICAgICAgICByZXR1cm4gcmVxdWVzdC5wYXRoDQoNCiAgICBkZWYgcmVuZGVyX2NvbnRl
eHRfY29udGVudHMoc2VsZiwgY29udGV4dCwgZGF0YSk6DQogICAgICAgIHJldHVybiBzdHIoZGly
KGNvbnRleHQpKQ0KDQojIGNyZWF0ZSB0aGUgYWxsLWVuY29tcGFzc2luZyBhcHBsaWNhdGlvbiBv
YmplY3QNCmFwcGxpY2F0aW9uID0gQXBwbGljYXRpb24oJ3Jvc2V0dGEyJykNCg0KIyBjcmVhdGUg
b3VyIHdlYiBzaXRlDQpzaXRlID0gYXBwc2VydmVyLk5ldm93U2l0ZShyZXNvdXJjZT1NeVBhZ2Uo
KSkNCg0KIyBjcmVhdGUgYSBzZXJ2aWNlIGNvbnRhaW5pbmcgb3VyIHdlYiBzaXRlIGFuZCBsaXN0
ZW5pbmcgb24gVENQIHBvcnQgMTQ1MA0Kc3ZjID0gc3RycG9ydHMuc2VydmljZSgndGNwOjE0NTAn
LCBzaXRlKQ0Kc3ZjLnNldFNlcnZpY2VQYXJlbnQoYXBwbGljYXRpb24pDQoNCg0K

--=-8I/WDEz3aO5JtB11WODI--

--=-F8H6FFhWXt+SqTfvayXY
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQBAO6X1VM70CYlRlK4RAhVkAKDST2X13419FamFx3rLWM+YTEBTZgCeMufJ
dtWfAkqhjrPH+ixV8+Z42Vs=
=UBS3
-----END PGP SIGNATURE-----

--=-F8H6FFhWXt+SqTfvayXY--