TypeError: AutoProxy Object Does Not Repeat - Multiprocessing

consider the following server code:

from multiprocessing.managers import BaseManager, BaseProxy

def baz(aa) :
    print "aaa"
    l = []
    for i in range(3) :
      l.append(aa)
    return l

class SolverManager(BaseManager): pass

manager = SolverManager(address=('127.0.0.1', 50000), authkey='mpm')
manager.register('solver', baz)

server = manager.get_server()
server.serve_forever()

and the client associated with it:

import sys
from multiprocessing.managers import BaseManager, BaseProxy

class SolverManager(BaseManager): pass

def main(args) :
    SolverManager.register('solver')
    m = SolverManager(address=('127.0.0.1', 50000), authkey='mpm')
    m.connect()

    for i in m.solver(args[1]):
        print i

if __name__ == '__main__':
    sys.exit(main(sys.argv))

I think something is missing here. I assume that I should subclass the BaseProxy class to provide an iterable object, but so far I have not been able to fix it.

when I start the client, I get this error:

Traceback (most recent call last):
  File "mpmproxy.py", line 17, in <module>
    sys.exit(main(sys.argv))
  File "mpmproxy.py", line 13, in main
    for i in m.solver(args[1]):
TypeError: 'AutoProxy[solver]' object is not iterable

however, if I try to print it, there is a list ... Perhaps it also relates to how the data is serialized between the client and server ...

the documentation has a similar case (with a generator), and they use the following class to access data:

class GeneratorProxy(BaseProxy):
    _exposed_ = ('next', '__next__')
    def __iter__(self):
        return self
    def next(self):
        return self._callmethod('next')
    def __next__(self):
        return self._callmethod('__next__')

Should I do something like this? Can someone give me an example and explain to me how this works?

Update

To clarify: suppose I add a class:

class IteratorProxy(BaseProxy):
    def __iter__(self):
        print self
        return self

and in the client I register the function as

SolverManager.register('solver', proxytype=IteratorProxy)

:

$python mpmproxy.py test
['test', 'test', 'test']
Traceback (most recent call last):
  File "mpmproxy.py", line 22, in <module>
    sys.exit(main(sys.argv))
  File "mpmproxy.py", line 18, in main
    for i in m.solver(args[1]):
TypeError: iter() returned non-iterator of type 'IteratorProxy'

, - ...

2

, :

, :

for i in m.solver(args[1])._getvalue():
    print i

!!! , ...

+3
1

, , __iter__, BaseProxy, , - !

0