[PEAK] Interfacing Peak with Twisted
Phillip J. Eby
pje at telecommunity.com
Sat Mar 5 20:25:50 EST 2005
At 04:51 PM 3/4/05 -0100, Tiago Cogumbreiro wrote:
>On Fri, 04 Mar 2005 08:41:46 -0500, Phillip J. Eby
><pje at telecommunity.com> wrote:
> > You might have a look at:
> >
> > http://peakplace.tigris.org/source/browse/peakplace/src/junction/
> >
> > which was a work-in-progress by John Landahl that's basically a
> > Twisted/PEAK messaging server. It's not nearly as simple as an example, of
> > course.
>What does it exactly do?
I think it's some sort of messaging bridge between Twisted and something
else. :) Obviously, I don't know very much about it.
> > If your goal is an XML-RPC and/or web
> > front-end, may I suggest you first try peak.web?
>My goal is to designed an application with a big enfasis in storing
>information. However it must have a web based interface and provide
>webservices for a desktop client.
>
>Peak seems to be the most advanced framework in academic terms, it has
>a very interesting concept behind it and a very clean implementation.
>Yet it provides a number of technologies that I've never used before:
>ini files for configuration of your components, the way of starting
>your server (something about AbstractCommand).
Have you looked at the IntroToPeak tutorial on the Wiki? It teaches you
everything you should need to know to e.g. run the bulletins example or
create command-line applications.
> I've already understood
>(in theory) the concept behind adpative programming and component
>based programming but making the transition from that to an actual
>example is a really big step because of the lack of documentation.
>Where can I learn about these details?
That depends a lot on what specifically you want to learn. Most people
using PEAK right now are folks who've invested some time in reading the
source and experimenting, and then in some cases volunteered to write
documentation. IntroToPeak and the peak.web sample on the Wiki are both
instances of such contributions.
>However twisted already provides a vast array of types of servers and
>a simple framework to do it. So this is why I've chosen to use twisted
>in the connectivity part and peak in the logic part.
Sure. PEAK doesn't attempt to duplicate Twisted, only to integrate with
it. Essentially, if you use a component in a PEAK application that relies
on running.ITwistedReactor, it will end up referring to Twisted's reactor
instead of PEAK's relatively simple one. You can then use peak.events to
run pseudothreads against Twisted "deferreds", etc.
However, for a simple web application (even with XML-RPC), it's unlikely
you'll need this level of integration, and the WSGI interface is probably
quite sufficient, or even superior to using Twisted, as it can allow you to
take advantage of a multiprocessor system for scaling.
> > peak.web is runnable with
> > WSGI, which means it's runnable within Twisted, albeit only in a
> > single-threaded manner at the moment.
>What is WSGI?
WSGI is the Python Web Server Gateway Interface, an API for connecting web
applications written in Python to web servers. It is defined by PEP 333.
There are WSGI gateways for mod_python, Twisted, and CGI out there, and
PEAK has FastCGI and local HTTP WSGI gateways available as well. An
application written to the WSGI spec, or written to a framework (like
peak.web or Zope 3) that supports WSGI, can potentially be run in any
WSGI-supporting web server.
This is useful because for example the "peak launch" command will launch an
arbitrary WSGI-based application in a private web server and start your
browser pointing to it. This is often a nice way to develop, test, and
debug an application that you're working on. Once the application works as
you want it to, you can always deploy it in another WSGI-supporting web
server (such as Twisted).
>Is PyProtocol used in Peak too? I've already installed Peak, I don't
>need to install PyProtocols too, right?
No; PEAK always includes the latest PyProtocols. By the way, make sure
you're using the CVS version of PEAK; there hasn't been a source or binary
snapshot release in some time. (I should probably create an automated
nightly build.)
More information about the PEAK
mailing list