Thanks for the suggestions !
I tried the stacklesssocket solution using the below code, with a
'wait-service': this service waits 10 seconds and then returns RESULT.
====
from concurrence import Tasklet, dispatch
import xmlrpclib, stacklesssocket
stacklesssocket.install()
def xml_rpc_call():
connection = xmlrpclib.ServerProxy('http://127.0.0.1:8888/')
print connection.test_service.wait()
def dots():
while True:
print "."
Tasklet.sleep(1)
def main():
Tasklet.new(xml_rpc_call)()
Tasklet.new(dots)()
dispatch(main)
====
There is an odd thing about this: when I remove
stacklesssocket.install(), the output is:
RESULT
.
.
and so on. With the stacklesssocket.install(), the output is:
.
RESULT
.
and so on. The stacklesssocket seems to be nonblocking, as the dots
tasklet can print the dot once. The dots tasklet does a sleep and then
the xml-rpc tasklet is in control, this time however, it blocks...
Anybody an idea about what's wrong ?
Thanks a lot!
Frederick
Quoting Richard Tew <[email protected]>:
2009/8/27 Kristján Valur Jónsson <[email protected]>:
Depends on what you mean by non-blocking.
We use the standard xml-rpc library with a "stackless blocking"
socket module.
Look in the list archive, there was a discussion about various
non-blocking stackless sockets solutions a few weeks back.
Yeah, it is much better to replace standard sockets with
stackless-compatible ones if you are going to use Stackless. Then you
do not carry the burden of using a custom version of a library. The
standard ones just work.
Here's Andrew Dalke's canonical example of urllib being used this way:
http://www.stackless.com/pipermail/stackless/2006-September/002796.html
Stackless socket web page:
http://code.google.com/p/stacklessexamples/wiki/StacklessNetworking
Cheers,
Richard.
_______________________________________________
Stackless mailing list
[email protected]
http://www.stackless.com/mailman/listinfo/stackless