Twisted, medusa, ZServer, and VFS's
G'day, I've just been looking at Twisted Python for the past hour or two, read the mailing list archives, and have some comments and questions. I've been working on using Medusa for serving a virtual mirror via http and ftp. I'm at the point where I'm close, but I'm starting to re-think some stuff, in particular my choice of Medusa. First my impressions of the three contenders; Twisted, Medusa, ZServer. Please correct me if I'm wrong in the following summaries; Medusa seems to be the daddy of them all. It's the oldest, which has benefits and problems. It is a little messy from its evolution, but seems pretty mature. It uses an async select loop to drive everything. It uses "asynchat" derived class objects to communicate on sockets. Data can be sent by pushing "producers" onto asynchat objects. Producers can be complex objects that produce data, execute callbacks, whatever. It's ftp and http server classes use a primative VFS to serve from. The asyncore and asynchat modules it is built on are now part of Python. Twisted seems to be a from-the-ground up re-invention of Medusa. It's newer, but surprisingly it's bigger, dispite it's apparently less mature feature set. It is similar in structure to Medusa, but simplifys it by dispensing with producers. It can use a variety of event-loops, including Tk and GTK, or it's own. It doesen't have a VFS (yet) so its ftp and http servers serve from the underlying os filesystem. ZServer grew out of Medusa. It uses the same basic underlying architecture, but throws in threads to get around the problem of delayed producers blocking the event loop. I'm not sure how tightly tied to Zope it is, but its http and ftp servers generally serve from a ZODB database, presumably wrapped in a Medusa VFS, though I have a feeling they might have changed that. ZServer also supports webDAV serving. It is possible that some of the enhancements could be merged back into Medusa, but probably it has changed so much it would be difficult. My problem with Medusa is its http and ftp servers assume that the VFS can deliver files wrapped in producers without blocking. I've fixed this by creating a patch for Medusa's asynchat that adds support for a ready() method to producers, so they can block without blocking the event loop. I'm currently in the process of writing Medusa VFS's for ftp and eventualy http backends. In the process I've also found that the Medusa ftp server is not as full featured as I want. In my search for Python VFS's I found PyVFS (http://www.pycage.de/). This is modelled on the Gnome/MC VFS, so it supports '/dir/somefile.tar.gz#tgz:/somepath' style paths to look inside tar, tgz, ftp, whatever. The various different VFS backends are loaded dynamicly as pluggins. These pluggins execute as a seperate process that are communicated with over a channel. The API is too simplistic for me, with files being "projected" out of the VFS to a local file to be manipulated/used. I don't like the pluggin-process-channel architecture either. In the reading of the Twisted mailing list, I saw a comment to the affect that the Medusa VFS was an example of how _not_ to do it, which lead to using webDAV as the API for a VFS. My gut feeling is DAV is a cool protocol for a VFS backend, but I dunno about using it as the primary API. Sure, it supports meta- data etc, but the reality is the API that is most widely used and understood is the POSIX filesytem API, as exposed in Python by the os and os.path modules. My solution for a VFS has been, upto now, based on Medusa's, but extending it to be more like os and os.path. So far it's a filesystem class with most of the os and os.path methods. One of the derived classes is a mountable_filesystem that allows you to mount other VFS filesystems off it. At this point I'm tempted to make a vfs module that emulates os and os.path so that you can mount whatever vfs's you want first, and then just replace all your os.* calls with vfs.* calls. Note that the one catch would be open() would need to be replaced with vfs.open(). I'm sort of fishing for general suggestions, comments, and interest. I'm at the point where I've just convinced myself my vfs is worth finishing, and my ready () patch to asynchat is worth updating, but I'm not sure what to use as the http and ftp server front-end, though I'm still leaning towards medusa. It looks like Twister is not ready, and ZServer would be too hard to seperate from Zope. PS... I'm not on the zope-dev list but I am on the twister and medusa lists. The zope-dev list is too much non-ZServer stuff and that's all I'm interested in. So zope-dev'ers, please reply to me or one/both of the other lists directly. -- ABO: finger abo@minkirri.apana.org.au for more information.
On Tuesday 09 October 2001 10:48 pm, Donovan Baarda wrote:
G'day,
First my impressions of the three contenders; Twisted, Medusa, ZServer. Please correct me if I'm wrong in the following summaries;
Medusa seems to be the daddy of them all. It's the oldest, which has benefits and problems. It is a little messy from its evolution, but seems pretty mature. It uses an async select loop to drive everything. It uses "asynchat" derived class objects to communicate on sockets. Data can be sent by pushing "producers" onto asynchat objects. Producers can be complex objects that produce data, execute callbacks, whatever. It's ftp and http server classes use a primative VFS to serve from. The asyncore and asynchat modules it is built on are now part of Python.
Twisted seems to be a from-the-ground up re-invention of Medusa. It's newer, but surprisingly it's bigger, dispite it's apparently less mature feature set. It is similar in structure to Medusa, but simplifys it by dispensing with producers. It can use a variety of event-loops, including Tk and GTK, or it's own. It doesen't have a VFS (yet) so its ftp and http servers serve from the underlying os filesystem.
twisted has lots of interesting ideas and architecture, but since i haven't used it i'll refrain from comment.
ZServer grew out of Medusa. It uses the same basic underlying architecture, but throws in threads to get around the problem of delayed producers blocking the event loop. I'm not sure how tightly tied to Zope it is, but its http and ftp servers generally serve from a ZODB database, presumably wrapped in a Medusa VFS, though I have a feeling they might have changed that. ZServer also supports webDAV serving. It is possible that some of the enhancements could be merged back into Medusa, but probably it has changed so much it would be difficult.
zserver swallows medusa whole, and leaves it pretty much untouched. it builds its functionality ontop of medusa. there is no vfs in zope's interaction with medusa. requests are handled by an installed handler and are passed off to a thread pool which calls zpublisher (zope's orb) that maps requests directly onto the zodb. zserver's thread architecure is pretty much separate from medusa. a single medusa thread handles most of the network i/o. the thread architecture of zope (imo) is indeed mainly for avoiding blocking the event loop and to allow zope and separate processing from i/o. i never used webdav so i can't comment, but my understanding is that changes to medusa made for zserver are basically things specific to zope, using zserver is basically using medusa. but using it without zope means you loose all the zope based functionality which includes the webdav implementation. <snip vfs/ftp>
I'm sort of fishing for general suggestions, comments, and interest. I'm at the point where I've just convinced myself my vfs is worth finishing, and my ready () patch to asynchat is worth updating, but I'm not sure what to use as the http and ftp server front-end, though I'm still leaning towards medusa. It looks like Twister is not ready, and ZServer would be too hard to seperate from Zope.
my two cents, i'm not sure why you think twister isn't ready but its probably worth experimenting with. as for zserver i don't think there is any additional standalone functionality that is offered on top of medusa distribution that really makes this make sense (with the possible exception that you want to use a threaded async i/o architecture like zservers, in which case you might also want to take a look at webware's asyncthreaded server.) cheers kapil thangavelu
Actually, this brings up this idea I had - Zope should replace medusa with Twisted. Why, you ask? 1) Twisted separates transport from protocols, and the event loop it uses is extendable and generic. That means: - It can run on Jython (using threads, someday with java.nio), and it can be integrated with the Tk and GTK event loops. - Your protocol doesn't have to worry about the transport - Twisted supports SSL, TCP and unix domain sockets right now, without having to make any change to the protocols. 2) Twisted is designed to run multiple servers and protocols at the same time, and these can be changed at runtime. It already includes pure python support for HTTP, FTP, LDAP, SMTP, POP3, DNS, telnet, AIM TOC, and IRC, all integrated with the main event loop (all have server support except DNS and LDAP). Adding new protocols to Zope is not easy, at the moment. 3) Twisted is being actively developed and extended. medusa less so. 4) Good integration with threads - while event based, twisted has a very nice model for dealing with threaded apps. 5) Twisted has Perspective Broker, an async.ready remote-object protocol that supports caching, object migration, and remote messaging, with integrated authentication and authorization. And it ideologically meshes with the "object publisher" notion in Zope. No, really :) Twisted already includes a high-level web framework, but Zope probably would not use it, and instead build its own on top of twisted's low-level http support.
Hi Itamar, this sounds good for me. One would have to see it in the wild. Would you be able to do a sample integration for testing? At the same time unmeshing the publishing process sounds sexy to me... Regards Tino --On Mittwoch, 10. Oktober 2001 12:11 +0200 Itamar Shtull-Trauring <lists@itamarst.org> wrote:
Actually, this brings up this idea I had - Zope should replace medusa with Twisted. Why, you ask?
1) Twisted separates transport from protocols, and the event loop it uses is extendable and generic. That means:
- It can run on Jython (using threads, someday with java.nio), and it can be integrated with the Tk and GTK event loops.
- Your protocol doesn't have to worry about the transport - Twisted supports SSL, TCP and unix domain sockets right now, without having to make any change to the protocols.
2) Twisted is designed to run multiple servers and protocols at the same time, and these can be changed at runtime. It already includes pure python support for HTTP, FTP, LDAP, SMTP, POP3, DNS, telnet, AIM TOC, and IRC, all integrated with the main event loop (all have server support except DNS and LDAP). Adding new protocols to Zope is not easy, at the moment.
3) Twisted is being actively developed and extended. medusa less so.
4) Good integration with threads - while event based, twisted has a very nice model for dealing with threaded apps.
5) Twisted has Perspective Broker, an async.ready remote-object protocol that supports caching, object migration, and remote messaging, with integrated authentication and authorization. And it ideologically meshes with the "object publisher" notion in Zope. No, really :)
Twisted already includes a high-level web framework, but Zope probably would not use it, and instead build its own on top of twisted's low-level http support.
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Tino Wildenhain wrote:
this sounds good for me. One would have to see it in the wild. Would you be able to do a sample integration for testing?
It's not that I actually have the time for it, nor do I have enough knowledge of Zope's medusa integration. I was rather hoping someone from DC would try it :)
On Wednesday 10 October 2001 04:41 am, Itamar Shtull-Trauring wrote:
Tino Wildenhain wrote:
this sounds good for me. One would have to see it in the wild. Would you be able to do a sample integration for testing?
It's not that I actually have the time for it, nor do I have enough knowledge of Zope's medusa integration. I was rather hoping someone from DC would try it :)
i think you're forgetting one fatal aspect. twisted is GPL and zope is not gpl compatible and that does not appear to be changing despite some mention from zc about trying to achieve compatiblity. its all fun and games till somebody talks to a lawyer. kapil
kapil thangavelu wrote:
twisted is GPL and zope is not gpl compatible and that does not appear to be changing despite some mention from zc about trying to achieve compatiblity.
Twisted is LGPL, and it might be possible to license it under something that will work with ZPL. I don't think this will be an issue if it comes to it.
On Thursday 11 October 2001 03:30 am, Itamar Shtull-Trauring wrote:
kapil thangavelu wrote:
twisted is GPL and zope is not gpl compatible and that does not appear to be changing despite some mention from zc about trying to achieve compatiblity.
Twisted is LGPL, and it might be possible to license it under something that will work with ZPL. I don't think this will be an issue if it comes to it.
itamar, thanks for the license clarification. i didn't mean to suggest that its not a good idea to work on it. i was hoping that someone from zc would give some sort of status update to paul's statements from http://aspn.activestate.com/ASPN/Mail/Message/622793 june. kapil
On Thu, 11 Oct 2001 03:28:32 -0700 kapil thangavelu <kthangavelu@earthlink.net> wrote:
thanks for the license clarification.
i didn't mean to suggest that its not a good idea to work on it.
i was hoping that someone from zc would give some sort of status update to paul's statements from http://aspn.activestate.com/ASPN/Mail/Message/622793 june.
Only a little bit more arm twisting needs to be done in order for RMS to approve ZPL 2.0 as GPL compatable. We're very close, it's just sometimes, "tricky" to get a straight answer when speaking in legal terms. -Michel
Only a little bit more arm twisting needs to be done in order for RMS to approve ZPL 2.0 as GPL compatable. We're very close, it's just sometimes, "tricky" to get a straight answer when speaking in legal terms.
and there was much rejoicing:) seriously, i'll buy a round for those involved who show up at ipc10. dealing with RMS is tricky period. kapil __________________________________________________ Do You Yahoo!? Make a great connection at Yahoo! Personals. http://personals.yahoo.com
On Thu, 11 Oct 2001 11:07:42 -0700 (PDT) Kapil Thangavelu <k_vertigo@yahoo.com> wrote:
Only a little bit more arm twisting needs to be done in order for RMS to approve ZPL 2.0 as GPL compatable. We're very close, it's just sometimes, "tricky" to get a straight answer when speaking in legal terms.
and there was much rejoicing:)
seriously, i'll buy a round for those involved who show up at ipc10.
It's mostly Hadar, I belive. But feel free to extend your generosity to include me. -Michel
At 10:38 AM 10/12/2001 +0100, Chris Withers wrote:
Kapil Thangavelu wrote:
dealing with RMS is tricky period.
I am at a loss as to why anyone bothers ;-)
(nope, this is not an attempt to start a flame war, everybody move along peacefully now...)
I am not going to proceed with a war (that will be my only post on that), but I think someone like Richard is needed. Without the extreme side, the entire movement would not work out. He is a pain to deal with, I have heard that his conference requirements (hotels, food ...) are ridiculous and when I met him I did not have the greatest experience either, but the "Debian kids" (that are the teens between 14-17 that work on Debian) jumped around him trying to catch some of his wisdom, like baby-birds try to catch food from their mom. It was fascinating! You should have been at Linuxtag 2000. There was this girl with a nice voice (and sexy dressed, which did not seem to impress anyone at a geek meeting like this) which sang a song a-cappella and the crowd barely clapped their hands; only out of good manners. Then Richard came and sang the hackers song and the crowd was transformed. After Richard was done they wistled and applauded, and the entire room became alive, even though his voice and singing was totally bad. It was hilarious! But this is the type of character the community needs. Someone who has the power to get a lot of people motivated! I think Richard is the only individual that is able to attack these large monolithic companies such as M$ in a way that he refuses to understand their point of view and they do not understand his. This gives a certain balance. I think that often Richard only argues with such extreme thoughts in order to keep the community together. I think, if you would privately talk with him and he trusts you, his opinions would not be that fanatic as they seem to be in public. Remember: He is a public figure and has to represent Open Source in its **totality**! Regards, Stephan -- Stephan Richter CBU - Physics and Chemistry Student Web2k - Web Design/Development & Technical Project Management
Sorry for the late replay to the list, I was having some problems with my mail client which led to replies being rejected by various mailing lists. On Fri, 2001-10-12 at 02:38, Chris Withers wrote:
Kapil Thangavelu wrote:
dealing with RMS is tricky period.
I am at a loss as to why anyone bothers ;-)
(nope, this is not an attempt to start a flame war, everybody move along peacefully now...)
No heat in this response :-) It's pretty simple: If GPL compatibility in a license is seen as a desirable goal (and it is, even by some who disagree with the GPL itself), and the FSF in the person of RMS is the final arbiter of GPL compatibility, then to get 'official' GPL compatibility declared for your license, you have to deal with RMS. If your question was actually "why does anyone bother with GPL license compatibility" then that is a separate discussion. Cheers, Michael.
People waste much more time arguing about the GPL license, than it would take for them to completely rewrite the entire Python and Zope code base from scratch under the GPL. So if you can't live with a non-GPL license, then instead of arguing about it, get yourself to work rewriting a new system from scratch under GPL, so you'll get what you want a lot sooner, and not waste everyone else's time who's already been over this before. Please stop using the GPL as a weapon to distract and waste the time of non-GPL projects, and do something constructive instead. E-fuck'n-nough said. -Don
take a chill pill. i'm *just* asking for a clarification about gpl-compatiblity. i'm not asking for zope to be released under the gpl. why, because there are alot of quality gpl programs that i would like to legally use and integrate with zope. specifically in this case aolserver. just as bad as gpl fanatics are anti gpl fanatics. people waste a lot more time and bandwidth when they don't bother to read. kapil --- Don Hopkins <xardox@mindspring.com> wrote:
People waste much more time arguing about the GPL license, than it would take for them to completely rewrite the entire Python and Zope code base from scratch under the GPL. So if you can't live with a non-GPL license, then instead of arguing about it, get yourself to work rewriting a new system from scratch under GPL, so you'll get what you want a lot sooner, and not waste everyone else's time who's already been over this before.
Please stop using the GPL as a weapon to distract and waste the time of non-GPL projects, and do something constructive instead.
E-fuck'n-nough said.
-Don
__________________________________________________ Do You Yahoo!? Make a great connection at Yahoo! Personals. http://personals.yahoo.com
Itamar Shtull-Trauring wrote:
Actually, this brings up this idea I had - Zope should replace medusa with Twisted.
Well, you're advocating this, so it's fair to paint a rosy picture. Can anyone see what the downsides would be? In any case, it does look cool. Perhaps a fishbowl proposal would be the way to go? Chris
Chris Withers wrote:
Well, you're advocating this, so it's fair to paint a rosy picture.
And I'm a Twisted developer, so I'm even more biased :) Though the overall design was not done by me, and was what convinced me to use it in the first place.
Can anyone see what the downsides would be?
1) Medusa is working *now*. This is of course the main reason why not to switch. I dunno how deeply integrated Zope is with ZServer. 2) Twisted has not hit 1.0 yet. OTOH the core APIs Zope would be using are pretty stable and I don't think we are that far from 1.0.
In any case, it does look cool. Perhaps a fishbowl proposal would be the way to go?
After I get some downsides, I might.
On Wed, 10 Oct 2001 13:12:24 +0200 Itamar Shtull-Trauring <lists@itamarst.org> wrote:
1) Medusa is working *now*. This is of course the main reason why not to switch. I dunno how deeply integrated Zope is with ZServer.
ZServer and the Zope application interface through a pretty clean boundary, so plugging a different front end, whether twisted or, for example, Apache 2.0, would not be a massive re-engineering.
In any case, it does look cool. Perhaps a fishbowl proposal would be the way to go?
After I get some downsides, I might.
Yes, some more details on interfacing the two would be interesting. -Michel
On Wednesday 10 October 2001 07:49 am, Michel Pelletier wrote:
On Wed, 10 Oct 2001 13:12:24 +0200
Itamar Shtull-Trauring <lists@itamarst.org> wrote:
1) Medusa is working *now*. This is of course the main reason why not to switch. I dunno how deeply integrated Zope is with ZServer.
ZServer and the Zope application interface through a pretty clean boundary, so plugging a different front end, whether twisted or, for example, Apache 2.0, would not be a massive re-engineering.
sadly the distinction between zpublisher and zserver is nowhere near as clean, i spent some time looking at it this morning trying to get my server of choice using zope. i thought it would be a mid morning hack, but the rabit hole follows the class heirarchy deeper and deeper:). all i have to show for my results is zope's output dumped to the server logs. its a start though... hopefully we get some new religion in the publisher, please... cheers kapil
At 08:00 AM 10/10/01 -0700, kapil thangavelu wrote:
sadly the distinction between zpublisher and zserver is nowhere near as clean, i spent some time looking at it this morning trying to get my server of choice using zope. i thought it would be a mid morning hack, but the rabit hole follows the class heirarchy deeper and deeper:). all i have to show for my results is zope's output dumped to the server logs. its a start though...
hopefully we get some new religion in the publisher, please...
Hmm... Check out: http://cvs.eby-sarna.com/pylib/ZLite/ Specifically, the ZPlumbing module, for several examples of ZPublisher run loops using CGI and two different FastCGI modules. I don't know anything about Twisted, so I couldn't tell you how easy it'd be to use the ZLite framework for this. ZLite is the beginnings of my work on a "Zope Lite" distribution. It's sort of the "Standalone ZODB" distribution's evil twin - intended if you want to use almost anything *but* the ZODB and ZMI parts of Zope. That is, when you just want the app server without the IDE and application framework. Architecturally, it's intended for multi-process, single thread setups using Apache as a front-end, with FastCGI. This shouldn't be considered an announcement or a release, btw. The code in CVS is production-hardened by years of service (many millions of hits served), but is utterly without documentation, nor has everything I've written been checked into CVS yet.
On Wednesday 10 October 2001 07:16 pm, Phillip J. Eby wrote:
At 08:00 AM 10/10/01 -0700, kapil thangavelu wrote:
hopefully we get some new religion in the publisher, please...
Hmm... Check out:
http://cvs.eby-sarna.com/pylib/ZLite/
Specifically, the ZPlumbing module, for several examples of ZPublisher run loops using CGI and two different FastCGI modules. I don't know anything about Twisted, so I couldn't tell you how easy it'd be to use the ZLite framework for this.
cool. i'm actually not using twisted. i'm using aolserver (aolserver.com). i didn't use any of the code from zlite, but looking it over i realized that i was doing things the hard way. i ended up using cStringIO as buffers for stdin,stdout so i could get a proof of concept working like stin = cStringIO.StringIO() stout = cStringIO.StringIO() Zpublisher.publish_module('Zope', stdin=stin, stdout=stout, environ=env) stout.seek(0) conn.WriteConn(stout.read())
ZLite is the beginnings of my work on a "Zope Lite" distribution. It's sort of the "Standalone ZODB" distribution's evil twin - intended if you want to use almost anything *but* the ZODB and ZMI parts of Zope. That is, when you just want the app server without the IDE and application framework. Architecturally, it's intended for multi-process, single thread setups using Apache as a front-end, with FastCGI.
interesting, the only other open source python project that i know that uses these is bobomail.sf.net
This shouldn't be considered an announcement or a release, btw. The code in CVS is production-hardened by years of service (many millions of hits served), but is utterly without documentation, nor has everything I've written been checked into CVS yet.
who needs docs when we can have one letter variables:) thanks kapil never let fear of a black cat stop you from walking in a new direction.
Wow, this is one hell of a thread. :^) FWIW, Grisha put a Bobo publisher in mod_python a couple of years ago. Thus, if you like ZPublisher-style processing, you can do it in Apache via mod_python. I outta contact him and see if he'd consider putting page templates in mod_python. Might be good for both page templates and mod_python. --Paul Phillip J. Eby wrote:
At 08:00 AM 10/10/01 -0700, kapil thangavelu wrote:
sadly the distinction between zpublisher and zserver is nowhere near as clean, i spent some time looking at it this morning trying to get my server of choice using zope. i thought it would be a mid morning hack, but the rabit hole follows the class heirarchy deeper and deeper:). all i have to show for my results is zope's output dumped to the server logs. its a start though...
hopefully we get some new religion in the publisher, please...
Hmm... Check out:
http://cvs.eby-sarna.com/pylib/ZLite/
Specifically, the ZPlumbing module, for several examples of ZPublisher run loops using CGI and two different FastCGI modules. I don't know anything about Twisted, so I couldn't tell you how easy it'd be to use the ZLite framework for this.
ZLite is the beginnings of my work on a "Zope Lite" distribution. It's sort of the "Standalone ZODB" distribution's evil twin - intended if you want to use almost anything *but* the ZODB and ZMI parts of Zope. That is, when you just want the app server without the IDE and application framework. Architecturally, it's intended for multi-process, single thread setups using Apache as a front-end, with FastCGI.
This shouldn't be considered an announcement or a release, btw. The code in CVS is production-hardened by years of service (many millions of hits served), but is utterly without documentation, nor has everything I've written been checked into CVS yet.
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
So did we at least get a fishbowl out of it? Cheers. -- Andy McKay. ----- Original Message ----- From: "Paul Everitt" <paul@zope.com> To: "Phillip J. Eby" <pje@telecommunity.com> Cc: <k_vertigo@yahoo.com>; <zope-dev@zope.org> Sent: Friday, October 12, 2001 7:23 AM Subject: Re: [Zope-dev] ZPublisher/ZServer interaction (was Re: A modest proposal)
Wow, this is one hell of a thread. :^)
FWIW, Grisha put a Bobo publisher in mod_python a couple of years ago. Thus, if you like ZPublisher-style processing, you can do it in Apache via mod_python.
I outta contact him and see if he'd consider putting page templates in mod_python. Might be good for both page templates and mod_python.
--Paul
Phillip J. Eby wrote:
At 08:00 AM 10/10/01 -0700, kapil thangavelu wrote:
sadly the distinction between zpublisher and zserver is nowhere near as clean, i spent some time looking at it this morning trying to get my server of choice using zope. i thought it would be a mid morning hack, but the rabit hole follows the class heirarchy deeper and deeper:). all i have to show for my results is zope's output dumped to the server logs. its a start though...
hopefully we get some new religion in the publisher, please...
Hmm... Check out:
http://cvs.eby-sarna.com/pylib/ZLite/
Specifically, the ZPlumbing module, for several examples of ZPublisher run loops using CGI and two different FastCGI modules. I don't know anything about Twisted, so I couldn't tell you how easy it'd be to use the ZLite framework for this.
ZLite is the beginnings of my work on a "Zope Lite" distribution. It's sort of the "Standalone ZODB" distribution's evil twin - intended if you want to use almost anything *but* the ZODB and ZMI parts of Zope. That is, when you just want the app server without the IDE and application framework. Architecturally, it's intended for multi-process, single thread setups using Apache as a front-end, with FastCGI.
This shouldn't be considered an announcement or a release, btw. The code in CVS is production-hardened by years of service (many millions of hits served), but is utterly without documentation, nor has everything I've written been checked into CVS yet.
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
I don't know, there were quite a lot of ideas brought up. It started with a discussion of Twisted being swappable for Medusa. Since Itamar is a developer of Twisted, he should champion that effort (he knows a lot more Zope than any of us know Twisted). There was also a discussion about replacing Medusa by embedding in Apache. While Michel said we had thought about it, that's about the extent: we've thought about it. It isn't even scheduled for further thinking at this point. I think the best thing is for some people that care deeply about this to go off and prototype a little bit and see what's involved. --Paul Andy McKay wrote:
So did we at least get a fishbowl out of it?
Cheers. -- Andy McKay.
----- Original Message ----- From: "Paul Everitt" <paul@zope.com> To: "Phillip J. Eby" <pje@telecommunity.com> Cc: <k_vertigo@yahoo.com>; <zope-dev@zope.org> Sent: Friday, October 12, 2001 7:23 AM Subject: Re: [Zope-dev] ZPublisher/ZServer interaction (was Re: A modest proposal)
Wow, this is one hell of a thread. :^)
FWIW, Grisha put a Bobo publisher in mod_python a couple of years ago. Thus, if you like ZPublisher-style processing, you can do it in Apache via mod_python.
I outta contact him and see if he'd consider putting page templates in mod_python. Might be good for both page templates and mod_python.
--Paul
Phillip J. Eby wrote:
At 08:00 AM 10/10/01 -0700, kapil thangavelu wrote:
sadly the distinction between zpublisher and zserver is nowhere near as clean, i spent some time looking at it this morning trying to get my server of choice using zope. i thought it would be a mid morning hack, but the rabit hole follows the class heirarchy deeper and deeper:). all i have to show for my results is zope's output dumped to the server logs. its a start though...
hopefully we get some new religion in the publisher, please...
Hmm... Check out:
http://cvs.eby-sarna.com/pylib/ZLite/
Specifically, the ZPlumbing module, for several examples of ZPublisher run loops using CGI and two different FastCGI modules. I don't know anything about Twisted, so I couldn't tell you how easy it'd be to use the ZLite framework for this.
ZLite is the beginnings of my work on a "Zope Lite" distribution. It's sort of the "Standalone ZODB" distribution's evil twin - intended if you want to use almost anything *but* the ZODB and ZMI parts of Zope. That is, when you just want the app server without the IDE and application framework. Architecturally, it's intended for multi-process, single thread setups using Apache as a front-end, with FastCGI.
This shouldn't be considered an announcement or a release, btw. The code in CVS is production-hardened by years of service (many millions of hits served), but is utterly without documentation, nor has everything I've written been checked into CVS yet.
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
At 10:23 AM 10/12/01 -0400, Paul Everitt wrote:
Wow, this is one hell of a thread. :^)
FWIW, Grisha put a Bobo publisher in mod_python a couple of years ago. Thus, if you like ZPublisher-style processing, you can do it in Apache via mod_python.
Personally, I prefer to keep a process boundary between Apache and my apps, for both safety and security. Usually they're running as different users, for one thing. We've been very pleased with FastCGI performance using mod_fcgi, so I don't see a whole lot to be gained by using mod_python. Another interesting factor that can affect performance is that we usually run many pre-forked Apache child processes, but rarely have more than 2 or 3 application processes. Using mod_python would probably impact memory usage adversely, since there would then be in effect a larger "application pool". A somewhat simplistic analysis of memory usage in the different approaches: O = Fixed application overhead (e.g. Python modules) D = Application dynamic data A = size of an Apache process P = Memory used for a python interpreter (if the OS shares executable segments, ignore the code size, as it will be a constant for all approaches and thus irrelevant for comparison purposes. In that case consider P will be the interpreter's data size) n = Number of threads or processes in the app server pool s = Number of Apache servers Zope w/Apache frontend = P + O + D*n + A*s mod_python = (P+O+D)*s + A*s ZLite = (P+O+D)*n + A*s Since "n" is usually smaller than "s", the ZLite approach uses considerably less memory than the mod_python approach, but can be faster than the Zope+Apache combination on multi-processor machines when the Python interpreter lock is an issue, at an extra cost of only (P+O)*(n-1). In our situations, that usually amounts to at most 2 or 3 times P+O, which is a small price to pay for also being able to ignore all threading issues.
Phillip J. Eby wrote:
At 10:23 AM 10/12/01 -0400, Paul Everitt wrote:
Wow, this is one hell of a thread. :^)
FWIW, Grisha put a Bobo publisher in mod_python a couple of years ago. Thus, if you like ZPublisher-style processing, you can do it in Apache via mod_python.
Personally, I prefer to keep a process boundary between Apache and my apps, for both safety and security. Usually they're running as different users, for one thing. We've been very pleased with FastCGI performance using mod_fcgi, so I don't see a whole lot to be gained by using mod_python.
Me too. But some people like the style of running their Python applications in Apache, so it's good to have mod_python. --Paul
On Wednesday 10 October 2001 10:49 am, Michel Pelletier allegedly wrote:
On Wed, 10 Oct 2001 13:12:24 +0200
Itamar Shtull-Trauring <lists@itamarst.org> wrote:
1) Medusa is working *now*. This is of course the main reason why not to switch. I dunno how deeply integrated Zope is with ZServer.
ZServer and the Zope application interface through a pretty clean boundary, so plugging a different front end, whether twisted or, for example, Apache 2.0, would not be a massive re-engineering.
I think a general proposal for "Pluggable front-ends" would be better received. I know there has been talk about dropping ZServer in favor of Apache 2.0. What would be nice would be to have options. ZServer's simplicity in terms of admin and setup is a big advantage, especially for getting Zope adopted and for testing. If Twisted is equally easy, it might sub in as a more powerful alternative (There is no doubt going to be disadvantages for some purposes I think), and Apache 2.0 for the ultimate in flexibility and scalability at the expense of initial setup, upkeep and learning curve. Just my $.02 /---------------------------------------------------\ Casey Duncan, Sr. Web Developer National Legal Aid and Defender Association c.duncan@nlada.org \---------------------------------------------------/
I think a general proposal for "Pluggable front-ends" would be better received. I know there has been talk about dropping ZServer in favor of Apache 2.0. What would be nice would be to have options.
Absolutely it may be more work but being able to eventually plug in your own front end would be great, be it ZServer, Twisted, Apache or maybe even IIS (shudder). Cheers. -- Andy McKay.
On Wed, 2001-10-10 at 09:42, Andy McKay wrote:
I think a general proposal for "Pluggable front-ends" would be better received. I know there has been talk about dropping ZServer in favor of Apache 2.0. What would be nice would be to have options.
Absolutely it may be more work but being able to eventually plug in your own front end would be great, be it ZServer, Twisted, Apache or maybe even IIS (shudder).
How about Tux? Would that even make sense? Michael Bernstein.
----- Original Message ----- From: "Michael R. Bernstein" <webmaven@lvcm.com> To: "Andy McKay" <andym@ActiveState.com> Cc: <zope-dev@zope.org> Sent: Wednesday, October 10, 2001 13:47 Subject: Re: [Zope-dev] A modest proposal: Replace medusa with Twisted
On Wed, 2001-10-10 at 09:42, Andy McKay wrote:
I think a general proposal for "Pluggable front-ends" would be better received. I know there has been talk about dropping ZServer in favor of Apache 2.0. What would be nice would be to have options.
Absolutely it may be more work but being able to eventually plug in your own front end would be great, be it ZServer, Twisted, Apache or maybe even IIS (shudder).
How about Tux? Would that even make sense?
Nope, TUX is linux-only. Andreas
How about Tux? Would that even make sense?
Nope, TUX is linux-only.
I think the point is to make an easily changeable front end that allows ZServer to be easily replaced with server x. Be it Tux or IIS or YAWS (Yet Another Web Server). Cheers. -- Andy McKay.
On Wed, 2001-10-10 at 10:47, Andreas Jung wrote:
From: "Michael R. Bernstein" <webmaven@lvcm.com>
On Wed, 2001-10-10 at 09:42, Andy McKay wrote:
Absolutely it may be more work but being able to eventually plug in your own front end would be great, be it ZServer, Twisted, Apache or maybe even IIS (shudder).
How about Tux? Would that even make sense?
Nope, TUX is linux-only.
Sorry, I meant: "Pre-supposing a pluggable interface, would it make sense to stick Tux in front of Zope on a Linux box?" Michael.
I'd say the fact that it doesn't work on Win32 is a bit of a downer. ----- Original Message ----- From: "Chris Withers" <chrisw@nipltd.com> To: "Itamar Shtull-Trauring" <lists@itamarst.org> Cc: <zope-dev@zope.org> Sent: Wednesday, October 10, 2001 12:00 PM Subject: Re: [Zope-dev] A modest proposal: Replace medusa with Twisted
Itamar Shtull-Trauring wrote:
Actually, this brings up this idea I had - Zope should replace medusa
with
Twisted.
Well, you're advocating this, so it's fair to paint a rosy picture. Can anyone see what the downsides would be?
In any case, it does look cool. Perhaps a fishbowl proposal would be the way to go?
Chris
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
On Wed, 10 Oct 2001, Phil Harris wrote:
I'd say the fact that it doesn't work on Win32 is a bit of a downer.
Just a bit but overall I expect that could be changed if it where really important. From what I have seen under high load and python program will kill windows after a few days with some VM problems so this does not seem that important to me. I have seen on irc and the lists a good deal of problems to do with windows and zope with VM issues over time. I have not done much testing with that though since it seems like kind of a silly thing to spend a few thousand on an OS to run a free server on when you can run it on a free os also and just pay for the hardware. Designing the webpages of tomorrow http://webme-eng.com Designing the MMORPGS of tomorrow http://worldforge.org
But kosh, we all know your hatred of all things Microsoft. You're absolutely right, it could be fixed, and probably should be as well. Thing is that from what I see win32 is the most popular platform for Zope (I'm including experimenters here though, not just production sites). Anyone from ZC want to comment on that. ----- Original Message ----- From: <kosh@aesaeion.com> To: "Phil Harris" <phil.harris@zope.co.uk> Cc: "Chris Withers" <chrisw@nipltd.com>; "Itamar Shtull-Trauring" <lists@itamarst.org>; <zope-dev@zope.org> Sent: Wednesday, October 10, 2001 12:21 PM Subject: Re: [Zope-dev] A modest proposal: Replace medusa with Twisted
On Wed, 10 Oct 2001, Phil Harris wrote:
I'd say the fact that it doesn't work on Win32 is a bit of a downer.
Just a bit but overall I expect that could be changed if it where really important. From what I have seen under high load and python program will kill windows after a few days with some VM problems so this does not seem that important to me. I have seen on irc and the lists a good deal of problems to do with windows and zope with VM issues over time. I have not done much testing with that though since it seems like kind of a silly thing to spend a few thousand on an OS to run a free server on when you can run it on a free os also and just pay for the hardware.
Designing the webpages of tomorrow http://webme-eng.com Designing the MMORPGS of tomorrow http://worldforge.org
On Wed, 10 Oct 2001, Phil Harris wrote:
But kosh, we all know your hatred of all things Microsoft.
How did you ever guess? Hmm my prejudices must be showing through again. ;)
You're absolutely right, it could be fixed, and probably should be as well.
My guess is that it will be also. I think it is good that experimenters can work with this stuff under windows and see how it works etc. It would even work for developers if they reboot their systems fairly often anyways. However I would not deploy it as a serious server on a win32 environment. Don't some of the features of zope only work on unix already like the watchdog?
Thing is that from what I see win32 is the most popular platform for Zope (I'm including experimenters here though, not just production sites). Anyone from ZC want to comment on that.
Thing is that from what I see win32 is the most popular platform for Zope
Actually I think win32 is in the minority. A poll on ZopeZen (totally unscientific) showed about 60% run on Linux. ----- Original Message ----- From: "Phil Harris" <phil.harris@zope.co.uk> To: <kosh@aesaeion.com> Cc: "Chris Withers" <chrisw@nipltd.com>; "Itamar Shtull-Trauring" <lists@itamarst.org>; <zope-dev@zope.org> Sent: Wednesday, October 10, 2001 4:25 AM Subject: Re: [Zope-dev] A modest proposal: Replace medusa with Twisted
But kosh, we all know your hatred of all things Microsoft.
You're absolutely right, it could be fixed, and probably should be as well.
Thing is that from what I see win32 is the most popular platform for Zope (I'm including experimenters here though, not just production sites). Anyone from ZC want to comment on that.
----- Original Message ----- From: <kosh@aesaeion.com> To: "Phil Harris" <phil.harris@zope.co.uk> Cc: "Chris Withers" <chrisw@nipltd.com>; "Itamar Shtull-Trauring" <lists@itamarst.org>; <zope-dev@zope.org> Sent: Wednesday, October 10, 2001 12:21 PM Subject: Re: [Zope-dev] A modest proposal: Replace medusa with Twisted
On Wed, 10 Oct 2001, Phil Harris wrote:
I'd say the fact that it doesn't work on Win32 is a bit of a downer.
Just a bit but overall I expect that could be changed if it where really important. From what I have seen under high load and python program will kill windows after a few days with some VM problems so this does not seem that important to me. I have seen on irc and the lists a good deal of problems to do with windows and zope with VM issues over time. I have not done much testing with that though since it seems like kind of a silly thing to spend a few thousand on an OS to run a free server on when you can run it on a free os also and just pay for the hardware.
Designing the webpages of tomorrow http://webme-eng.com Designing the MMORPGS of tomorrow http://worldforge.org
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Thing is that from what I see win32 is the most popular platform for Zope
Actually I think win32 is in the minority. A poll on ZopeZen (totally unscientific) showed about 60% run on Linux.
Our server logs always show win32 binary downloads as far and away the winner. That doesn't mean that they are the majority as far as actual deployments, but it underscores the point that win32 support is an imperative. I suspect that a lot of people use the win32 version to get started with Zope and evaluate it. Brian Lloyd brian@zope.com Software Engineer 540.361.1716 Zope Corporation http://www.zope.com
On Wed, 10 Oct 2001 12:25:09 +0100 "Phil Harris" <phil.harris@zope.co.uk> wrote:
But kosh, we all know your hatred of all things Microsoft.
You're absolutely right, it could be fixed, and probably should be as well.
Thing is that from what I see win32 is the most popular platform for Zope (I'm including experimenters here though, not just production sites). Anyone from ZC want to comment on that.
Whether or not it is the most popular, who knows? Windows support is absolutely essential however and will never be traded off for any other feature. -Michel
Michel Pelletier writes:
Whether or not it is the most popular, who knows? Windows support is absolutely essential however and will never be traded off for any other feature.
FYI I finally have a Cygwin compiled Zope running in a Cygwin enviroment. This is with the very latest Cygwin distribution augmented by a locally compiled Cygwin as represented by the current Cygwin CVS files. There is a new Cygwin release pending or one can just use the "developer snapshot" of Cygwin ! FWIW - I use a slightly modified distutils as outlined in method 2 @ http://www.vso.cape.com/~nhv/files/python/myDistutils.txt This is on a Win2k sp2 machine and the Zope-2.4.1 tarball % cd Zope-2.4.1-src % python wo_pcgi.py % ./start & Cheers Norman Vine
FYI I finally have a Cygwin compiled Zope running in a Cygwin enviroment. This is with the very latest Cygwin distribution augmented by a locally compiled Cygwin as represented by the current Cygwin CVS files.
Cool! This is excellent. This means that I stand a shot at getting rid of 200 miserable MB of VC++ on my machine. I presume this means that Cygwin Python ships with threads enabled? - C
Chris McDonough writes:
FYI I finally have a Cygwin compiled Zope running in a Cygwin enviroment. This is with the very latest Cygwin distribution augmented by a locally compiled Cygwin as represented by the current Cygwin CVS files.
Cool! This is excellent. This means that I stand a shot at getting rid of 200 miserable MB of VC++ on my machine.
I presume this means that Cygwin Python ships with threads enabled?
No I forgot to mention that this is with a locally compiled Python that hasn't had threading disabled. ie % cd $PY_2_1_SRC % ./configure % make; make install Where the Python source is the current Cygwin distribution source < very minor mods from official tarball > Also note not everyone is having the same success with threading that I am < however I do not believe they are running Win2k sp2 > There are several of us trying to stomp an apparent race condition with earlier Windows distributions. Any simple test cases demonstrating the problem welcome < preferably C examples > $PY_2_1_src / Lib / test / test_threadedtempfile.py seems to be a good test to tickle the bug This seems tobe another good python test $ZOPE_2_4_1_src / lib / Components / ExtensionClass / test / regrtest.py Cheers Norman
I had a brief conversation with the Cygwin Python maintainer a little while back, supposedly the next release of Cygwin will have a threaded Python (2.1.1 or maybe even higher). Phil On Wed, 10 Oct 2001 13:17:22 -0400 "Chris McDonough" <chrism@zope.com> wrote:
FYI I finally have a Cygwin compiled Zope running in a Cygwin enviroment. This is with the very latest Cygwin distribution augmented by a locally compiled Cygwin as represented by the current Cygwin CVS files.
Cool! This is excellent. This means that I stand a shot at getting rid of 200 miserable MB of VC++ on my machine.
I presume this means that Cygwin Python ships with threads enabled?
- C
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Perhaps I'm confused, but I have an old (>3 months) version of Cygwin, but when I installed the Win32 Python 2.1.1 release, I was able to build extension modules just fine using distutils, after I built an import library. You shouldn't need VC++ to build Zope extensions, just distutils and gcc. Be sure to use (the equivalent of): python211 setup.py build --compiler=mingw32 At 11:33 PM 10/10/01 -0400, Phil Harris wrote:
I had a brief conversation with the Cygwin Python maintainer a little while back, supposedly the next release of Cygwin will have a threaded Python (2.1.1 or maybe even higher).
Phil
On Wed, 10 Oct 2001 13:17:22 -0400 "Chris McDonough" <chrism@zope.com> wrote:
FYI I finally have a Cygwin compiled Zope running in a Cygwin enviroment. This is with the very latest Cygwin distribution augmented by a locally compiled Cygwin as represented by the current Cygwin CVS files.
Cool! This is excellent. This means that I stand a shot at getting rid of 200 miserable MB of VC++ on my machine.
I presume this means that Cygwin Python ships with threads enabled?
- C
Phillip J. Eby writes:
Perhaps I'm confused, but I have an old (>3 months) version of Cygwin, but when I installed the Win32 Python 2.1.1 release, I was able to build extension modules just fine using distutils, after I built an import library. You shouldn't need VC++ to build Zope extensions, just distutils and gcc. Be sure to use (the equivalent of):
python211 setup.py build --compiler=mingw32
FYI We are talking about a POSIX compatable WIN32 based Zope that uses the Cygwin DLL for the POSIX layer. The MingW32 compiled executables are normal Win32 programs that don't know about <unistd.h> ect... Cheers Norman
It's probably me that's confused :) On Wed, 10 Oct 2001 21:19:04 -0500 "Phillip J. Eby" <pje@telecommunity.com> wrote:
Perhaps I'm confused, but I have an old (>3 months) version of Cygwin, but when I installed the Win32 Python 2.1.1 release, I was able to build extension modules just fine using distutils, after I built an import library. You shouldn't need VC++ to build Zope extensions, just distutils and gcc. Be sure to use (the equivalent of):
python211 setup.py build --compiler=mingw32
At 11:33 PM 10/10/01 -0400, Phil Harris wrote:
I had a brief conversation with the Cygwin Python maintainer a little while back, supposedly the next release of Cygwin will have a threaded Python (2.1.1 or maybe even higher).
Phil
On Wed, 10 Oct 2001 13:17:22 -0400 "Chris McDonough" <chrism@zope.com> wrote:
FYI I finally have a Cygwin compiled Zope running in a Cygwin enviroment. This is with the very latest Cygwin distribution augmented by a locally compiled Cygwin as represented by the current Cygwin CVS files.
Cool! This is excellent. This means that I stand a shot at getting rid of 200 miserable MB of VC++ on my machine.
I presume this means that Cygwin Python ships with threads enabled?
- C
Note that I was able to get Zope up and running using Cywin after: - upgrading to the most recent snapshot Cywgin dll (cygwin1-20011016.dll), which was as easy as copying the file over the existing 1.3.3 version of cywin1.dll. I didn't futz with building anything Cygwin-related out of CVS. - recompiling Cygwin python with thread support (which was a matter of "./configure; make; make install" with the Cygwin Python sources, as Norman said). - rerunning $PY_SRC/Tools/scripts/h2py.py against the fcntl.h file that lives in Cygwin's /usr/include/sys and saving the resulting FCNTL.py file in /usr/local/lib/python2.1/plat-cygwin/FCNTL.py I then compiled the Zope trunk using Cygwin Python and GCC via a simple "python wo_pcgi.py" and ran it via "./start", and voila! It at least appears to work! Very nice... thanks very much for the heads-up, Norman. I need to buy the guys at Cygnus a beer or a yacht or something. -C ----- Original Message ----- From: "Norman Vine" <nhv@cape.com> To: <michel@zope.com> Cc: <zope-dev@zope.org> Sent: Wednesday, October 10, 2001 11:30 AM Subject: [Zope-dev] Zope & Cygwin
Michel Pelletier writes:
Whether or not it is the most popular, who knows? Windows support is absolutely essential however and will never be traded off for any other feature.
FYI I finally have a Cygwin compiled Zope running in a Cygwin enviroment. This is with the very latest Cygwin distribution augmented by a locally compiled Cygwin as represented by the current Cygwin CVS files.
There is a new Cygwin release pending or one can just use the "developer snapshot" of Cygwin !
FWIW - I use a slightly modified distutils as outlined in method 2 @ http://www.vso.cape.com/~nhv/files/python/myDistutils.txt
This is on a Win2k sp2 machine and the Zope-2.4.1 tarball
% cd Zope-2.4.1-src % python wo_pcgi.py % ./start &
Cheers
Norman Vine
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Chris McDonough writes:
Note that I was able to get Zope up and running using Cywin after:
- upgrading to the most recent snapshot Cywgin dll (cygwin1-20011016.dll), which was as easy as copying the file over the existing 1.3.3 version of cywin1.dll. I didn't futz with building anything Cygwin-related out of
CVS.
- recompiling Cygwin python with thread support (which was a matter of "./configure; make; make install" with the Cygwin Python sources, as Norman said).
- rerunning $PY_SRC/Tools/scripts/h2py.py against the fcntl.h file that lives in Cygwin's /usr/include/sys and saving the resulting FCNTL.py file
in
/usr/local/lib/python2.1/plat-cygwin/FCNTL.py
Ooops - good catch I keep forgetting to mention this step We should really figure out a way to automagically do this in the python build process
I then compiled the Zope trunk using Cygwin Python and GCC via a simple "python wo_pcgi.py" and ran it via "./start", and voila! It at least appears to work! Very nice... thanks very much for the heads-up, Norman.
:-)
I need to buy the guys at Cygnus a beer or a yacht or something.
Maybe a yacht full of beer :-) also of note http://apache.dev.wapme.net FYI I have managed to patch the python 2.1.1 sources to build the winreg module with Cygwin. It is a fairly pervasive patch in that it python then has to know both the 'posix' and the 'Win32' way of handling unicode, error systems, ect. Because of the breadth of this I have held off submitting the patch to the Python SourceForge collector but I am wondering if this would be useful for Zope development ? Cheers Norman
----- Original Message ----- From: "Norman Vine" <nhv@cape.com> To: <michel@zope.com> Cc: <zope-dev@zope.org> Sent: Wednesday, October 10, 2001 11:30 AM Subject: [Zope-dev] Zope & Cygwin
Michel Pelletier writes:
Whether or not it is the most popular, who knows? Windows support is absolutely essential however and will never be traded off for any other feature.
FYI I finally have a Cygwin compiled Zope running in a Cygwin enviroment. This is with the very latest Cygwin distribution augmented by a locally compiled Cygwin as represented by the current Cygwin CVS files.
There is a new Cygwin release pending or one can just use the "developer snapshot" of Cygwin !
FWIW - I use a slightly modified distutils as outlined in method 2 @ http://www.vso.cape.com/~nhv/files/python/myDistutils.txt
This is on a Win2k sp2 machine and the Zope-2.4.1 tarball
% cd Zope-2.4.1-src % python wo_pcgi.py % ./start &
Cheers
Norman Vine
Hope it's OK to continue crossposting this thread.
also of note http://apache.dev.wapme.net
Grabbed the bindist earlier today. ;-) I wanted to torture test the Zope session manager under the cygwin-built Zope using ab, which is good real-world threading test. It appears that neither ab nor wget much like something about their communication with the cygwin-built Zope. Here's a wget session with a cygwin-built python/Zope combo: --22:14:42-- http://localhost/ => `index.html' Connecting to localhost:80... connected! HTTP request sent, awaiting response... 200 OK 2 Server: Zope/(unreleased version, python 2.1.1, cygwin) ZServer/1.1b1 3 Date: Wed, 17 Oct 2001 02:14:42 GMT 4 Connection: close 5 Content-Type: text/html 6 Content-Length: 3012 7 0K -> .. (freeze) Here's a session with a VC++-built Zope: $ wget -S http://localhost:8080/ --22:17:20-- http://localhost:8080/ => `index.html' Connecting to localhost:8080... connected! HTTP request sent, awaiting response... 200 OK 2 Server: Zope/(unreleased version, python 2.1.0, win32) ZServer/1.1b1 3 Date: Wed, 17 Oct 2001 02:17:20 GMT 4 Connection: close 5 Content-Type: text/html 6 Content-Length: 194 7 0K -> [100%] 22:17:20 (9.47 KB/s) - `index.html' saved [194/194] It's almost as if the wrong content-length is provided by the Cygwin-built Zope and both wget and ab are waiting for data. Browsers OTOH don't seem to care; they happily render the page as its given to them by the Cygwin-built Zope. I'll investigate this further when possible.
FYI I have managed to patch the python 2.1.1 sources to build the winreg module with Cygwin. It is a fairly pervasive patch in that it python then has to know both the 'posix' and the 'Win32' way of handling unicode, error systems, ect.
Because of the breadth of this I have held off submitting the patch to the Python SourceForge collector but I am wondering if this would be useful for Zope development ?
I don't think it's a pressing need for us, although I'll need to defer to Brian Lloyd, who is still the Zope release-master despite years of desperate kicking and screaming. The only thing in Zope for Windows that uses the registry is the installer and the service manager and we don't use the winreg module in the current install or service process, AFAIK. It is handy, however, to know it can be used under Cygwin with your patches. Thanks so much again, - C
The only thing in Zope for Windows that uses the registry is the installer and the service manager and we don't use the winreg module in the current install or service process, AFAIK. It is handy, however, to know it can be used under Cygwin with your patches.
Note that cygwin is GPL, and since ZPL isn't GPL-compatible... (/me waves to kapil): "The Cygwin API library found in the winsup subdirectory of the source code is also covered by the GNU GPL. By default, all executables link against this library (and in the process include GPL'd Cygwin glue code). This means that unless you modify the tools so that compiled executables do not make use of the Cygwin library, your compiled programs will also have to be free software distributed under the GPL with source code available to all." Phillip Eby's suggestion of using mingw is therefore more practical, since that links against MSVCRT and is compatible with standard Windows python.
Chris McDonough writes:
Hope it's OK to continue crossposting this thread.
I wanted to torture test the Zope session manager under the cygwin-built Zope using ab, which is good real-world threading test. It appears that neither ab nor wget much like something about their communication with the cygwin-built Zope. Here's a wget session with a cygwin-built python/Zope combo:
--22:14:42-- http://localhost/ => `index.html' Connecting to localhost:80... connected! HTTP request sent, awaiting response... 200 OK 2 Server: Zope/(unreleased version, python 2.1.1, cygwin) ZServer/1.1b1 3 Date: Wed, 17 Oct 2001 02:14:42 GMT 4 Connection: close 5 Content-Type: text/html 6 Content-Length: 3012 7
0K -> .. (freeze)
Here's a session with a VC++-built Zope:
$ wget -S http://localhost:8080/ --22:17:20-- http://localhost:8080/ => `index.html' Connecting to localhost:8080... connected! HTTP request sent, awaiting response... 200 OK 2 Server: Zope/(unreleased version, python 2.1.0, win32) ZServer/1.1b1 3 Date: Wed, 17 Oct 2001 02:17:20 GMT 4 Connection: close 5 Content-Type: text/html 6 Content-Length: 194 7
0K -> [100%]
22:17:20 (9.47 KB/s) - `index.html' saved [194/194]
It's almost as if the wrong content-length is provided by the Cygwin-built Zope and both wget and ab are waiting for data. Browsers OTOH don't seem
to
care; they happily render the page as its given to them by the Cygwin-built Zope. I'll investigate this further when possible.
Yup... I get the same results :-( If you can tell me where the code is in Zope that is determining the Content-Length I will look into the Python && Cygwin 'C" code that is being called. Cheers Norman
I think it"s in ZServer/HTTPResponse.py ----- Original Message ----- From: "Norman Vine" <nhv@cape.com> To: "'Chris McDonough'" <chrism@zope.com> Cc: <zope-dev@zope.org>; <cygwin@cygwin.com> Sent: Thursday, October 18, 2001 20:18 Subject: RE: [Zope-dev] Zope & Cygwin
If you can tell me where the code is in Zope that is determining the Content-Length I will look into the Python && Cygwin 'C" code that is being called.
Cheers
Norman
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Andreas Jung writes:
I think it"s in ZServer/HTTPResponse.py
----- Original Message ----- From: "Norman Vine" <nhv@cape.com> To: "'Chris McDonough'" <chrism@zope.com> Cc: <zope-dev@zope.org>; <cygwin@cygwin.com> Sent: Thursday, October 18, 2001 20:18 Subject: RE: [Zope-dev] Zope & Cygwin
If you can tell me where the code is in Zope that is determining the Content-Length I will look into the Python && Cygwin 'C" code that is being called.
Thanks, I found it However let me show off my ignorance here ============= $ wget -S http://localhost:8080 --21:12:56-- http://localhost:8080/ => `index.html' Connecting to localhost:8080... connected! HTTP request sent, awaiting response... 200 OK 2 Server: Zope/(Zope 2.4.1 (source release, python 2.1, linux2), python 2.1.1, cygwin) ZServer/1.1b1 3 Date: Fri, 19 Oct 2001 01:12:56 GMT 4 Connection: close 5 Content-Type: text/html 6 Content-Length: 3022 7 0K -> .. < WGET HANGS HERE > <509> Zope-2.4.1-src $ ./stop [1]+ Terminated ./start <510> Zope-2.4.1-src $ wc index.html 105 362 3022 index.html ============== Note that after <Ctrl-C>'ing out of wget index.html has been recieved and that its length is 3022 bytes !! I know I am missing something obvious here, but .... why was Chris getting 194 bytes with a VC++ compiled Zope ?? and what does this 194 bytes represent. My guess is that it is the length of the response's header but I do not see where this is determined. FWIW - I have traced the Zope code back into Zpublisher.BaseResponse === snipped from earlier msg === Here's a session with a VC++-built Zope: $ wget -S http://localhost:8080/ --22:17:20-- http://localhost:8080/ => `index.html' Connecting to localhost:8080... connected! HTTP request sent, awaiting response... 200 OK 2 Server: Zope/(unreleased version, python 2.1.0, win32) ZServer/1.1b1 3 Date: Wed, 17 Oct 2001 02:17:20 GMT 4 Connection: close 5 Content-Type: text/html 6 Content-Length: 194 7 0K -> [100%] ======= Cheers Norman
Note that after <Ctrl-C>'ing out of wget index.html has been recieved and that its length is 3022 bytes !!
I know I am missing something obvious here, but .... why was Chris getting 194 bytes with a VC++ compiled Zope ??
I was wgetting a very short page... one that was essentially an HTML representation of "This is the contents of the foobar folder". OTOH, you're probably looking at the QuickStart page or something, which is much longer. The content length is the size of the payload of the response (the number of bytes that makes up, in this case, the HTML). I haven't had a chance to look further at the problem unfortunately. -- Chris McDonough Zope Corporation http://www.zope.org http://www.zope.com "Killing hundreds of birds with thousands of stones"
----- Original Message ----- From: "Norman Vine" <nhv@cape.com> To: "'Chris McDonough'" <chrism@zope.com>
I wanted to torture test the Zope session manager under the cygwin-built Zope using ab, which is good real-world threading test. It appears that neither ab nor wget much like something about their communication with the cygwin-built Zope. Here's a wget session with a cygwin-built python/Zope combo: .. Yup... I get the same results :-(
If you can tell me where the code is in Zope that is determining the Content-Length I will look into the Python && Cygwin 'C" code that is being called.
This may well be related to the reported breakage with cygwin more recent than 1.3.1/1.1.8 and apache. I've got a faulting setup with squid showing the same thing, but no time to debug (yet). You might consider testing with 1.1.8 and seeing if that fixes the issue. If reverting does 'fix' this, and the time to cause the fault is relatively short, consider doing a binary CVS search to find the commit that broke it. Rob
Possibly dumb question - Are there binary distributions of v 1.1.8 of cygwin1.dll available from cygwin.org anywhere or should I compile it from source? I looked around for a while on there and it seems that I'd need to use CVS to check out a 1.1.8-tagged branch and compile to get back to that revision.
This may well be related to the reported breakage with cygwin more recent than 1.3.1/1.1.8 and apache. I've got a faulting setup with squid showing the same thing, but no time to debug (yet). You might consider testing with 1.1.8 and seeing if that fixes the issue. If reverting does 'fix' this, and the time to cause the fault is relatively short, consider doing a binary CVS search to find the commit that broke it.
Rob
----- Original Message ----- From: "Chris McDonough" <chrism@digicool.com> To: "Robert Collins" <robert.collins@itdomain.com.au> Cc: <nhv@cape.com>; "'Chris McDonough'" <chrism@zope.com>; <zope-dev@zope.org>; <cygwin@cygwin.com> Sent: Sunday, October 21, 2001 3:08 AM Subject: Re: [Zope-dev] Zope & Cygwin
Possibly dumb question - Are there binary distributions of v 1.1.8 of cygwin1.dll available from cygwin.org anywhere or should I compile it from source? I looked around for a while on there and it seems that I'd need to use CVS to check out a 1.1.8-tagged branch and compile to get back to that revision.
I'd suggest using CVS, if only to get ready for binary searching :}. -Rob
Chris McDonough writes:
I wanted to torture test the Zope session manager under the cygwin-built Zope using ab, which is good real-world threading test. It appears that neither ab nor wget much like something about their communication with the cygwin-built Zope. Here's a wget session with a cygwin-built python/Zope combo:
--22:14:42-- http://localhost/ => `index.html' Connecting to localhost:80... connected! HTTP request sent, awaiting response... 200 OK 2 Server: Zope/(unreleased version, python 2.1.1, cygwin) ZServer/1.1b1 3 Date: Wed, 17 Oct 2001 02:14:42 GMT 4 Connection: close 5 Content-Type: text/html 6 Content-Length: 3012 7
0K -> .. (freeze)
It appears as if this now works wit a locally compiled Cygwin DLL Cygwin CVS files < 2001-10-31 > wget now returns and I can now access the 'raw' Zope store with my editor via ftp :-)) Not really sure which patch, within the last 2 days, it was but .. THANK YOU ! Norman
Not for me, get all sorts of socket errors ----- Original Message ----- From: "Itamar Shtull-Trauring" <lists@itamarst.org> To: <zope-dev@zope.org> Sent: Wednesday, October 10, 2001 12:24 PM Subject: Re: [Zope-dev] A modest proposal: Replace medusa with Twisted
Phil Harris wrote:
I'd say the fact that it doesn't work on Win32 is a bit of a downer.
Last I checked twisted ran fine on win32.
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
but, I'm just about to try 0.11, so my opinion may change. ----- Original Message ----- From: "Itamar Shtull-Trauring" <lists@itamarst.org> To: <zope-dev@zope.org> Sent: Wednesday, October 10, 2001 12:24 PM Subject: Re: [Zope-dev] A modest proposal: Replace medusa with Twisted
Phil Harris wrote:
I'd say the fact that it doesn't work on Win32 is a bit of a downer.
Last I checked twisted ran fine on win32.
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Oops, forgot the URL: http://www.twistedmatrix.com/
Designing the webpages of tomorrow http://webme-eng.com Designing the MMORPGS of tomorrow http://worldforge.org On Wed, 10 Oct 2001, Itamar Shtull-Trauring wrote:
Actually, this brings up this idea I had - Zope should replace medusa with Twisted. Why, you ask?
Any ideas what the performance would be compared to medusa?
1) Twisted separates transport from protocols, and the event loop it uses is extendable and generic. That means:
- It can run on Jython (using threads, someday with java.nio), and it can be integrated with the Tk and GTK event loops.
- Your protocol doesn't have to worry about the transport - Twisted supports SSL, TCP and unix domain sockets right now, without having to make any change to the protocols.
SSL support out of the box would be a big deal. It really annoys me that zope does not support https by default. It is another thing to hunt down and merge in the config file for and it is necessary for any modern web server.
2) Twisted is designed to run multiple servers and protocols at the same time, and these can be changed at runtime. It already includes pure python support for HTTP, FTP, LDAP, SMTP, POP3, DNS, telnet, AIM TOC, and IRC, all integrated with the main event loop (all have server support except DNS and LDAP). Adding new protocols to Zope is not easy, at the moment.
It would be really nice if it supported NNTP, SOAP, and XML-RPC also. However the last two could probably be stuck in fairly rapidly since python already supports those and they run over HTTP already.
3) Twisted is being actively developed and extended. medusa less so.
Actively developed would definitely be an improvement.
4) Good integration with threads - while event based, twisted has a very nice model for dealing with threaded apps. What benefits would this really give? What drawbacks would we have to deal with? Overall I have noticed that python does not seem to actually thread very well since there is that global lock.
5) Twisted has Perspective Broker, an async.ready remote-object protocol that supports caching, object migration, and remote messaging, with integrated authentication and authorization. And it ideologically meshes with the "object publisher" notion in Zope. No, really :)
This part sounds pretty cool I will definitely have to look at it some more. I looked at it a little while ago and it looked very cool however zope has some serious things that twisted does not. Mainly I really like how the access control system works, the user folder system and the object store.
Twisted already includes a high-level web framework, but Zope probably would not use it, and instead build its own on top of twisted's low-level http support.
We could essentially keep the ZMI however I do think the ZMI is due for a large rewrite soon. The frames and a few other things have got to go. Mostly because xhtml 1.0 is the last html version to even have frames and zope will have to adapt as things progress. It would not surprise me if in 2 or 3 years most new browsers didn't support frames anymore.
kosh@aesaeion.com wrote:
Any ideas what the performance would be compared to medusa?
Nope. However, it is pretty fast, and Zope is slow anyway, since it's so dynamic.
4) Good integration with threads - while event based, twisted has a very nice model for dealing with threaded apps.
What benefits would this really give? What drawbacks would we have to deal with? Overall I have noticed that python does not seem to actually thread very well since there is that global lock.
I'm not sure how ZServer does it, but mixing asyncore and threaded apps isn't fun, to say the least.
This part sounds pretty cool I will definitely have to look at it some more. I looked at it a little while ago and it looked very cool however zope has some serious things that twisted does not. Mainly I really like how the access control system works, the user folder system and the object store.
Which is why I said we should stay with Zope's current stuff and not build on twisted's own high level web package, just it's low-level HTTP support.
We could essentially keep the ZMI however I do think the ZMI is due for a large rewrite soon.
I'm not saying anything about the ZMI - if done correctly people would never know medusa was replaced, since this is a very low-level part of Zope.
----- Original Message ----- From: "Itamar Shtull-Trauring" <lists@itamarst.org> To: <zope-dev@zope.org> Sent: Wednesday, October 10, 2001 06:11 Subject: [Zope-dev] A modest proposal: Replace medusa with Twisted
Actually, this brings up this idea I had - Zope should replace medusa with Twisted. Why, you ask?
If you like to see Medusa replaced by Twisted you should write a Fishbowl proposal (*wink*). But what would be real benefits for Zope ? Enhanced reliabilty ? Enhanced speed ?
1) Twisted separates transport from protocols, and the event loop it uses
is
extendable and generic. That means:
The Medusa architecture is also more or less generic and extendable.
- It can run on Jython (using threads, someday with java.nio), and it can be integrated with the Tk and GTK event loops.
There is another group currently working on a Zope version using Jython but supporting Tk and GTK is currently beyond Zopes usage.
3) Twisted is being actively developed and extended. medusa less so.
Medusa work fairly reliable. Because Twisted seems to implemented in Python too I expect it will have similiar problems as Medusa because they will use the same underlying Python modules. ZC made lots of changes and enhancements during the last years to Medusa to fit our needs and make it reliable on multiple plattforms. Such efforts might be neccessary for Twister too. So I do not see the benefits for Twister yet :-) Andreas --------------------------------------------------------------------- - Andreas Jung Zope Corporation - - EMail: andreas@zope.com http://www.zope.com - - "Python Powered" http://www.python.org - - "Makers of Zope" http://www.zope.org - - "Endings are just Beginnings" - ---------------------------------------------------------------------
Andreas Jung wrote:
The Medusa architecture is also more or less generic and extendable.
1) I've talked to at least one person who had trouble integrating an external protocol into Zope, and ended up running it as a seperate process and communicating over XML-RPC. 2) Plugging in a different transports instead of TCP (e.g. SSL) is much easier in Twisted than medusa, as far as I can tell. In m2crypto's medusa ssl code very protocol needs its own subclass in order supports SSL. In Twisted that is done transparently - the protocol doesn't have to worry about the transport. Basically any protocol (excepting perhaps FTP) could run out of the box with SSL in Twisted, using the one SSL support module. Or Unix domain sockets for that matter :) 3) Twisted provides a larger number of protocols out of the box (e.g. pure python LDAP client, AOL TOC, IRC, POP3, SMTP, telnet) than medusa. Hopefully we will soon have an integrated DNS server as well, though I can't think how *that* would help Zope. Twisted does not use asyncore, if that's what you mean when you say it will have the same problems as medusa.
On Wed, 10 Oct 2001 16:05:06 +0200 Itamar Shtull-Trauring <lists@itamarst.org> wrote:
2) Plugging in a different transports instead of TCP (e.g. SSL) is much easier in Twisted than medusa, as far as I can tell. In m2crypto's medusa ssl code very protocol needs its own subclass in order supports SSL. In Twisted that is done transparently - the protocol doesn't have to worry about the transport. Basically any protocol (excepting perhaps FTP) could run out of the box with SSL in Twisted, using the one SSL support module. Or Unix domain sockets for that matter :)
3) Twisted provides a larger number of protocols out of the box (e.g. pure python LDAP client, AOL TOC, IRC, POP3, SMTP, telnet) than medusa. Hopefully we will soon have an integrated DNS server as well, though I can't think how *that* would help Zope.
Just to throw out another idea, Amos has discussed with me in the past the idea of replacing medusa with Apache 2.0. Compelling as many of Twisted's features may be, Apache 2.0 as far as i can tell supports many of them as well (except perhaps jython integration, which is a pipe dream anyway for Zope). Apache has the upshot in that it is rock solid, tested by millions, trusted by even more, and no doubt one of the most actively developed peices of software there is. For ZC the upshots of 1) not needing to maintain it, and 2) it being a excellent marketing tool outweight many technical benifits that twisted may have that Apache doesn't (I'd like to know what the differences are, however). For example, does twisted do URL rewriting? proxy? process/thread job control? Twisted does have the advantage of 1, but not 2. Further, our faith in the continuing development of Apache is, de facto, more than that of twisted simply based on the age, number of users, and number of developers of each project. I'm not dismissing the idea, I'm just pointing out an alternative to Itamar's alternative. ;) -Michel
On Wednesday 10 October 2001 08:09 am, Michel Pelletier wrote:
Just to throw out another idea, Amos has discussed with me in the past the idea of replacing medusa with Apache 2.0. Compelling as many of Twisted's features may be, Apache 2.0 as far as i can tell supports many of them as well (except perhaps jython integration, which is a pipe dream anyway for Zope). Apache has the upshot in that it is rock solid, tested by millions, trusted by even more, and no doubt one of the most actively developed peices of software there is.
For ZC the upshots of 1) not needing to maintain it, and 2) it being a excellent marketing tool outweight many technical benifits that twisted may have that Apache doesn't (I'd like to know what the differences are, however). For example, does twisted do URL rewriting? proxy? process/thread job control?
i'd never thought i'd see the day, open source software advocating the inclusion of other open source software because of marketing dictates.
I'm not dismissing the idea, I'm just pointing out an alternative to Itamar's alternative. ;)
my alternative to your alternative, is aolserver and mozilla. no mozilla isn't a webserver, but why should zope be either. cheers kapil
On Wed, 10 Oct 2001, Donovan Baarda <abo@minkirri.apana.org.au> wrote:
Medusa seems to be the daddy of them all.
Calling Medusa Twisted's daddy is rewriting history.
Twisted seems to be a from-the-ground up re-invention of Medusa.
Only as much as it is a from-the-ground up re-invention of qmail. Or Apache. Twisted is a new network framework, which takes good ideas from all around.
It's newer, but surprisingly it's bigger, dispite it's apparently less mature feature set.
I think Twisted's feature set is very mature. Particularily, it does have good integration with threads.
It is similar in structure to Medusa, but simplifys it by dispensing with producers.
Well, you can still have producers -- they are just tied in to connections rather then the event loop itself.
It can use a variety of event-loops, including Tk and GTK, or it's own. It doesen't have a VFS (yet) so its ftp and http servers serve from the underlying os filesystem.
Well, the HTTP server can serve from in-memory resources, or for that matter, any resource that follows the protocol. -- The Official Moshe Zadka FAQ: http://moshez.geek The Official Moshe Zadka FAQ For Dummies: http://moshez.org Read the FAQ
participants (25)
-
Andreas Jung -
Andreas Jung -
Andy McKay -
Brian Lloyd -
Casey Duncan -
Chris McDonough -
Chris McDonough -
Chris Withers -
Don Hopkins -
Donovan Baarda -
Itamar Shtull-Trauring -
kapil thangavelu -
Kapil Thangavelu -
kosh@aesaeion.com -
Michael R. Bernstein -
Michel Pelletier -
Moshe Zadka -
Norman Vine -
Paul Everitt -
Phil Harris -
Phillip J. Eby -
Robert Collins -
Stephan Richter -
Tino Wildenhain -
Zopista