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
On 18 May 2004, the following message was posted to this mailinglist:
Jp Calderone exarkun at divmod.com wrote:
>Daniel Newton wrote:
> I have a simple XML-PRC server similar to the example below:
> from twisted.web import xmlrpc, server
> class Example(xmlrpc.XMLRPC):
> """An example object to be published."""
> def xmlrpc_add(self, a, b):
> """Return sum of arguments."""
> return a + b
> if __name__ == '__main__':
> from twisted.internet import reactor
> r = Example()
> reactor.listenTCP(7080, server.Site(r))
> I want to be able to get the address of the client that calls the
> method can anyone help me with this?
This solution didn't work because 'transport' isn't a property of the
I'm currently in the process of changing from a customized
SimpleXMLRPCServer to a twisted XMLRPC server solution and I need to
insert the client IP into the attributes passed to the called xmlrpc
method. Anyone who knows the answer and is willing to share the info?
I'm using Twisted 1.3.0 on python2.4 on an Ubuntu-Hoary x86 Linux box.
I'm using twisted and spawnProcess() with a Queue structure to chain
processes that need to be called (specifically, imagemagick commands).
I use the "processEnded" event/method of t.i.p.ProcessProtocol to go
from one task to the next. Twisted shares a python process with a
multi-threaded web-app-kit (Webware) so it has to be run in a thread.
This worked well on other older versions of twisted and older versions
of python; also on linux. I've tracked down the problem to be twisted
itself (or my incorrect use of it) rather than my code. This example
from twisted.internet import reactor
from twisted.internet.protocol import ProcessProtocol
class MyProt( ProcessProtocol ):
def processEnded(self, reason):
print "ended.", reason
executable = '/bin/touch'
args = ( '/tmp/foo.txt', )
args = (executable,) + tuple(args)
reactor.spawnProcess( MyProt(), executable, args )
reactor.callLater( 5, reactor.stop )
As is, this code never runs the "processEnded()" method of MyProt().
If I change the reactor.run() parameter to leave the signal handlers
on, it works.
Note that I need to leave the signal handlers turned off because I
can't run the reactor in the main thread; Webware needs that.
I also know that the subprocess is giving up its file descriptors; I
can see that if I put more print statements into MyProt(). And I know
that the subprocess is working; /tmp/foo.txt is there.
It seems that somehow the reactor is using signals to notice when a
process has ended; this makes a certain ammount of sense intuitively,
though I don't understand the nitty-gritty of processes and signals at
all. And more importantly, this has worked before on other
combinations of twisted/python.
Is this a bug? If so, has it been fixed? If not, what should I do to
detect when a spawned process is finished?
Thanks very much. Twisted rocks.
I have a couple of services. The second is dependent on the first being
fully initialised before the second gets set up.
I thought that the order of Service startup was typically handled by
organising services in a hierarchy, and that the startup of the
hierarchy understood deferreds. I was wrong - service.Application is a
MultiService and only understands deferreds in stopService.
There's a DependentMultiService class in twisted.internet.app but that
entire module has been deprecated.
Is there a reason why the MultiService does not support deferreds in
Is there a reason that DependentMultiService was not moved across to the
In other words, what is the recommended way of starting services in the
correct order, including waiting for them to get initialised fully,
/ \__ Matt Goodall, Pollenation Internet Ltd
\__/ \ w: http://www.pollenation.net
__/ \__/ e: matt(a)pollenation.net
/ \__/ \ t: +44 (0)113 2252500
/ \ Any views expressed are my own and do not necessarily
\__/ reflect the views of my employer.
wxreactor in Twisted 2.1 uses threadedselectreactor. This means that wx
apps ought to use wxreactor, not TSR directly; there are some issues
with vanilla TSR wx integration that are also present in wxreactor, but
will be fixed in future versions of wxreactor.
What's broken (there may be more):
1. reactor shutdown events aren't handled correctly (e.g. Deferred
returned from during-shutdown event).
2. Signal handling for e.g. Ctrl-C is caught by wx, not twisted.
In order to get these fixed I need your help. I have a version of
wxreactor that *probably* fixes these in Subversion trunk. You can try
it out by running doc/core/examples/wxdemo.py. Hitting Ctrl-C, choosing
Exit from the menu or closing the menu all should have the same effect -
the application logs "shutting down in 0.3 seconds...", "2", "1", "0"
then exits. In addition, "Hello world" should continue to be printed
while the dialog box is open or you are holding down a menu.
Please try this out, and report success or failure at
<http://twistedmatrix.com/bugs/issue1235>. I'm especially interested to
hear if it works on Windows or Mac OS X. Please include your OS and
version of wxPython/wxWidgets when submitting reports.
I am interested in compressing the PB objects after serialization and
unpacking when received at the other side.
I a using the pb.PBClientFactory() and ServerFactory from the documentation.
Where is the most proper place to hack this?
What is possible?
I need to do this after the object becomes a string so i won't have to pickle
Is it possible to do something like factory.protocol.serialize=mySerialize
and in mySerialize i use the banana.encode function to encode the list of
jelly myself and return there a new list that contains the now ziped and
encoded value and let it go as it were.
This way i am not interfering with the jelly logic.
Blog: http://tzahi.blogsite.org | Home Site: http://tzahi.webhop.info
WARNING TO SPAMMERS: see at
Version 0.1 of sAsync, "SQLAlchemy Done Asynchronously" has been
released at http://foss.eepatents.com/sAsync. It provides a
Twisted-compatible way to use SQLAlchemy.
There are now some usage examples at
http://foss.eepatents.com/sAsync/wiki/Examples thanks to some people who
are apparently already using the package.
"sAsync offers asynchronous access to the outstanding SQLAlchemy package
by Michael Bayer. It is built around an 'access broker' object that
provides a priority-queued asynchronous interface to database accesses.
By wrapping your database-access methods in a @transact decorator, you
can put the underlying method call in a queue with whatever scheduling
priority you designate and immediately obtain a Deferred object that
references the eventual result of the database transaction. The access
broker also includes structure for convenient and integrated table
setup, startup, and shutdown.
"The package also provides higher-level SQLAlchemy enhancements
including persistent item storage with deferred read and write results,
and a persistent dictionary-like object using that storage. Text
indexing and searching, again with deferred 'behind the scenes'
processing, will be included at some point."
I've got a twisted application that uses a LineOnlyReceiver as its
protocol. All connections between clients and my server are open
ended so I have to be sure they are working correctly. However, when
I disrupt the network connection between a client and the server, the
server happily keeps writing to the connection while the client
closes its part and re-connects again.
I am using sendLine to send the data but have also tried
transport.write and transport.writeSomeData but with these no data is
being sent at all!
So, anyone knows what I have to do to get signalled when writing to a
Any help would be very welcome.
I've run into "this service needs to know about this event from this
other service" once too often. It's message bus time, baby.
However, many of the daemons I use are locally-written Twisted code, so
a Twisted-friendly (async api) one would be nice. Note also that other
non-Twisted code will need to connect to it, so rolling my own (aside
from it being a bad idea from a NIH perspective) is out.
I could of course wrap the message queue receiver for something
well-proven like Spread into a thread. Then there's XMPP which is the
darling of the anti-Java movement - though wrapping Twisteds' XMPP API
to get a message bus might be annoying.