hi there, folks:
I'd really like to release 0.7.0 but I would like it to be at least a
little bit tested before I do so. Could those of you with CVS trees check
everything out and see if it performs as advertised? Deeper bugs than
that will have to wait for the next release, but I'd at least like to know
if it works for someone other than me.
______ __ __ _____ _ _
| ____ | \_/ |_____] |_____|
|_____| |_____ | | | |
@ t w i s t e d m a t r i x . c o m
I just released version 0.3 of Hep, my multiprotocol message server.
The big change in this release is that Hep is now using Twisted for all
its networking stuff: HTTP and XMLRPC clients, POP3, SMTP, and web
The Hep web page is:
Thanks for the nice software!
I just set up a basic demo new server using twisted. Some initial comments:
1. It took me almost no time to put together a basic dummy NNTP
server. Just create the backend, put a mktap driver in, and it's
2. There seems to be a problem with the server class. It translates
\r\n.. to \r\n. in the data the backend supplies - this should be
the other way round (it should be *doubling* the dots, so that they
don't look like the end of data marker to the client).
3. It would be nice if the server handled the translation to CRLF, so
that backends could return data with lines separated by \n, and the
server class would convert that to \r\n. After all, \n is the
"normal" end of line character internal to Python code, and \r\n is
a feature of the NNTP protocol, so the protocol driver should be
responsible for the conversion (IMHO). Of course, this is a
behaviour change, which could break existing backends, so maybe
it's not practical to make this change.
4. The implementation of STAT requests the article from the
backend. This could be inefficient if getting the message ID is
cheap, but getting the full article is expensive for a particular
backend (it will be for me). In my partly-implemented NNTP server
written in "raw" Python (before I found Twisted) I had a backend
method getArticle(..., head=1, body=1) which was used to implement
all of HEAD, BODY, ARTICLE and STAT, just by setting different
values for the head and body parameters (so the backend could check
for the case where neither was required, and act accordingly).
(2) is obviously fairly trivial. I think I could implement (3) and
(4), if it would be useful. I could submit a patch, which would alter
the server code and the 2 existing backends (I couldn't test the
database backend, as I don't have a database to test with, but I could
test the pickle-based code). Would this be helpful? Are there likely
to be 3rd party nntp backends which would be broken by such a change?
This signature intentionally left blank
I remember seeing something like this pass the list a while back, but I can't seem to find it. I've been trying to write a simple proxy server for my two machines at home, using twisted. I've tried using code I'd written for a simple NNTP server, as a base, but upon calling reactor.run(), I get "Proxy instance has no attribute 'doStart'". I've tried using the app module, as a way of trying to run it, but haven't had much success there either. Has anyone done this before? Does anyone have any docs for doing this sort of thing?
hey, thanks for fixing the caching bug that quickly!
i think something else broke with your last few commits though:
this debug output is from getNodeView for a GET request, with no controllers
working. i have a wvfactory_DetailLink in sam.web.serverlist.View, which the
viewStack finds without problems:
31/10/2002 15:41 [*samclient*] [<twisted.web.woven.widgets.KeyedList instance at 0x83c17e4>, <twisted.web.woven.widgets.DefaultWidget instance at 0x83e6674>, <twisted.web.woven.widgets.DefaultWidget instance at 0x83e45ac>, <sam.web.serverlist.View instance at 0x83ae814>, <module 'twisted.web.woven.widgets' from '/home/paul/Twisted/twisted/web/woven/widgets.pyc'>]
now when i submit data to my controller, i get a different viewStack
exceptions.NotImplementedError: You specified view name DetailLink on a node, but no factory_DetailLink method was found in [<twisted.web.woven.widgets.DefaultWidget instance at 0x840963c>, <twisted.web.woven.widgets.KeyedList instance at 0x83db2bc>, <module 'twisted.web.woven.widgets' from '/home/paul/Twisted/twisted/web/woven/widgets.pyc'>].
the relevant xhtml snippet for this is:
<ul model="root/inventory" view="KeyedList">
<li id="emptyList">No Servers defined</li>
<a view="DetailLink" model="name">
<span view="Text" model="name" /></a>
root is a dictionary in my serverlist.Model, which has serverlist.View
registered as View.
inventory is a Dictionary like class, which has registered for a
DictionaryModel Wrapper with components.
as inventory is only a virtual model, imho the parent's view should
propagate down to it's viewStack, which seems to work, unless a controller
what's needed to fix this? do i need to make inventory and/or root
a real model and register a view for it ?
>>>>> "glyph" == twisted-python-request <twisted-python-request(a)twistedmatrix.com> writes:
[re socket timeouts]
glyph> <jjn(a)kriln.com> wrote:
>> Personally, when I was running high volume web servers, we'd
>> tune down the keepalive timers to a fairly short interval to
>> keep sockets from getting tied up too long, to prevent resource
>> availability issues that we were seeing.
glyph> Just out of curiosity, how does one configure this timeout
glyph> with apache?
Actually, there are a few timeout flags which can be set in Apache,
depending on how specific you want. TimeOut (300 sec default) is the
overall one which fails requests with nothing happening. There is also
DavMinTimeout (0), KeepAliveTimeout (15), and ProxyTimeout(300).
Tim (aka Spudnik)
I'm trying to navigate the site but many (almost all) of the pages show
an error page of the form:
exceptions.IOError: [Errno 24] Too many open files:
... just thought you might like to know.
The initialisers for reflectors seem to do some interesting stuff. The
SQLReflector in particular does some stuff that requires a callback.
Shouldn't this be handled using a Deferred? It's extremely frustrating
not being able to add an errback.
Suggestions include having a populatedDeferred as a member (rather than
populatedCallback), or moving the populate stuff into a separate method
that returns a Deferred.