durusmail: quixote-users: quixote.server.medusa (Re: Pipelining the async HTTP server)
async HTTP server included?
2004-01-06
2004-01-06
Re: async HTTP server included?
2004-01-06
2004-01-06
async HTTP server included?
2004-01-06
Re: async HTTP server included?
2004-01-06
async HTTP server included?
2004-01-07
Re: async HTTP server included?
2004-01-07
2004-01-07
2004-01-07
2004-01-07
Re: Licensing
2004-01-07
2004-01-07
2004-01-07
Pipelining the async HTTP server
2004-01-07
Re: Pipelining the async HTTP server
2004-01-07
2004-01-07
2004-01-08
Re: Pipelining the async HTTP server
2004-01-08
2004-01-08
2004-01-08
2004-01-08
quixote.server.medusa (Re: Pipelining the async HTTP server)
2004-01-08
quixote.server.medusa
2004-01-08
2004-01-12
Re: quixote.server.medusa (Re: Pipelining the async HTTP server)
2004-01-13
Problem with using quixote.server.medusa vs. standalone medusa
2004-01-14
Re: Problem with using quixote.server.medusa vs. standalone medusa
2004-01-14
Resolved! Was Re: [Quixote-users] Re: Problem with using quixote.server.medusa vs. standalone medusa
2004-01-14
Re: Resolved! Was Re: Re: Problem with using quixote.server.medusa vs. standalone medusa
2004-01-14
Pipelining the async HTTP server
2004-01-08
2004-01-08
Re: Pipelining the async HTTP server
2004-01-08
2004-01-08
2004-01-06
Re: async HTTP server included?
2004-01-06
quixote.server.medusa (Re: Pipelining the async HTTP server)
Graham Fawcett
2004-01-08
A.M. Kuchling wrote:
> On Wed, Jan 07, 2004 at 11:13:29PM -0500, Graham Fawcett wrote:
>
>>Unless Medusa is under serious, active development (?) ...
>
> I'm maintaining it, but applying only bugfixes.  One major problem is that
> Medusa doesn't support SSL and fixing this is difficult; as a result I
> switched from Medusa to Twisted for a work-related project because SSL
> support was required.  (Luckily your quixote.server.twisted_http module
> makes that trivial.)

Glad to hear it! I wasn't sure if the module was getting any use.

>
> If someone needs fancy HTTP/1.1 features, they can use a full-blown web
> server such as Apache.
>
> Another thing I'd like to see, and will write if Medusa goes in: a module
> that runs a Quixote application on a random port and then uses
> webbrowser.open() to run a browser pointing at the application.  This would
> make it really easy to write portable little applications.  Shutting down
> the server is a problem, though; the user might just close the browser and
> leave the server process running.  Perhaps the server could automatically
> shutdown after 15 or 30 minutes of inactivity, in addition to having an
> explicit 'Shut down' link in the web interface.

That's a great idea. On Windows, I've used the (non-portable) solution
of using COM to dispatch a browser, and polling to see if it's still
alive. I don't know too much about the webbrowser module; does it return
a pid for the browser process? Imperfect, but it would beat a timeout.

>>If there's no great objection, I will prepare a 'quixote.server.medusa'
>>package
>>that contains only the required Medusa elements (and perhaps moving
>>medusa_http.py into the package as well?) and recommend we include it in
>>the next release.
>
> OK.  I could also prepare quixote.server.medusa, though not before the
> weekend because for the moment I'm computerless at home.

I've created a patchfile (-p0) that should add the quixote.server.medusa
subpackage. Apparently it's too big for the maillist, so I put it at:

   http://fawcett.medialab.uwindsor.ca/quixote/medusa.patch

For fellow Windows testers, an archive of these files is
(temporarily) located at

   http://fawcett.medialab.uwindsor.ca/quixote/medusa_patch.tar.gz

There are a few extra files that I hadn't realized were needed (Sam
didn't put all his imports at the top of his source files...).
xmlrpc_handler is in there, and a few other utility files needed for
logging (which eventually could be stripped out).

I also added a submodule, server.py, which is a copy of medusa_http.py
with the addition of a convenience class, Server. Starting a Quixote app
using this approach is as easy as:

      from quixote.server.medusa import Server
      s = Server('quixote.demo', port=8080)
      s.run()

The signature of the Server constructor is:

__init__(self, approot, config_file=None, port=80, enable_ptl=True)

where enable_ptl is a truth value; it will automatically import and
enable PTL if set to a true value.

Comments welcome!

-- Graham



reply