Return a string result with out breaking loop

castironpi castironpi at gmail.com
Tue Aug 26 00:11:24 EDT 2008


On Aug 25, 6:37 pm, Andrew <nob... at yahoo.com> wrote:
> Hi I was wondering if there is anyway with XML RPC to send a string of
> text from the server to the client with out calling return thus breaking
>   my loop
>
> for example
>
>   def somefunc():
>        for action, files in results:
>                full_filename = os.path.join(path_to_watch, files)
>                theact = ACTIONS.get(action, "Unknown")
>                out2 =  str(full_filename) +  " " + str(theact)
>                return out2
>
> the return statement will return a result breaking my loop. My goal is
> to have it continue looping and updating the client
>
> any ideas?
>
> Cheers
>
> Andrew
>
> Thanks in advance
>
> Pyhon 2.5.2
>
> Windows XP

Andrew,

I have generators working on both sides of a SimpleXMLRPCServer
instance.  You ask for a server-side generator, and I won't post the
whole program, as it's long, so here's an important part:

server = SimpleXMLRPCServer(("localhost", 8000))
server.register_introspection_functions()

def gen( ):
  while 1:
    yield 1
    yield 2
    yield 3

servg= gen( )
server.register_function( servg.next, 'gen' )

Called 's.gen( )' four times, output:

localhost - - [25/Aug/2008 23:08:28] "POST /RPC2 HTTP/1.0" 200 -
1
localhost - - [25/Aug/2008 23:08:29] "POST /RPC2 HTTP/1.0" 200 -
2
localhost - - [25/Aug/2008 23:08:30] "POST /RPC2 HTTP/1.0" 200 -
3
localhost - - [25/Aug/2008 23:08:31] "POST /RPC2 HTTP/1.0" 200 -
1

As expected.  I guess that your problem was on this line:

server.register_function( servg.next, 'gen' )

where instead you just wrote

server.register_function( servg, 'gen' ) #wrong

or perhaps even

server.register_function( gen, 'gen' ) #wrong

I'll offer an explanation of the difference too, for the asking.



More information about the Python-list mailing list