Hi Tomer,
please accept my appology, was not trying to be rude.
thanks for the reply, the obtain/deliver methods looks really promising,
although i am unable to get them to work as yet (possibly because i am not
using the classic mode but rather the service mode)
on the server i am creating a list of objects and trying to pass them back
to the client, and be able to have some form of access to them after the
connection has been terminated.
connection code:
@contextmanager
def connection_to_root(self):
conn = connect(self._agent_host, self._agent_port,
config = {"allow_all_attrs" : True,
'allow_pickle' : True})
conn.root.setup(*self._args, **self._kwargs)
yield conn.root.root
conn.close()
from the client, i then use code like:
with Client(ip).connection_to_root() as c:
return [SomeLocalClass(x) for x in xrange(5)]
Obviously, as soon as i leave the context, my "weakly referenced" object
are no longer available. and when i try to deepcopy them, i get the error
above with the lock.
how would i use the obtain/deliver to get what i need, everything i passed
to it so far as the connection complains that it does not have the modules
attribute required to execute the following line:
return conn.modules["rpyc.lib.compat"].pickle.loads(pickle.dumps(localobj))
again, appologies for the rudeness
On Sunday, December 23, 2012 2:28:19 PM UTC+2, Tomer Filiba wrote:
>
> and even though you're rude, try looking at rpyc.classic.obtain/deliver
>
> https://github.com/tomerfiliba/rpyc/blob/master/rpyc/utils/classic.py#L251
>
> -----------------------------------------------------------------
>
> *Tomer Filiba*
> tomerfiliba.com <http://www.facebook.com/tomerfiliba>
> <http://il.linkedin.com/in/tomerfiliba>
>
>
> On Sun, Dec 23, 2012 at 2:17 PM, Tomer Filiba <[email protected]<javascript:>
> > wrote:
>
>> how about you post a code snippet ???
>>
>> -----------------------------------------------------------------
>>
>> *Tomer Filiba*
>> tomerfiliba.com <http://www.facebook.com/tomerfiliba>
>> <http://il.linkedin.com/in/tomerfiliba>
>>
>>
>> On Sun, Dec 23, 2012 at 2:15 PM, ben <[email protected] <javascript:>>wrote:
>>
>>> yet, when i try to make a deepcopy of an object after allowing pickling,
>>> i get the following error:
>>>
>>> File "/auto/sw_tools/root/lib/python2.7/copy.py", line 182, in deepcopy
>>> rv = reductor(2)
>>> File
>>> "/auto/sw_tools/root/lib/python2.7/site-packages/rpyc-3.2.1-py2.7.egg/rpyc/core/netref.py",
>>>
>>> line 176, in __reduce_ex__
>>> return pickle.loads, (syncreq(self, consts.HANDLE_PICKLE, proto),)
>>> File
>>> "/auto/sw_tools/root/lib/python2.7/site-packages/rpyc-3.2.1-py2.7.egg/rpyc/core/netref.py",
>>>
>>> line 71, in syncreq
>>> return conn.sync_request(handler, oid, *args)
>>> File
>>> "/auto/sw_tools/root/lib/python2.7/site-packages/rpyc-3.2.1-py2.7.egg/rpyc/core/protocol.py",
>>>
>>> line 433, in sync_request
>>> raise obj
>>> *cPickle.PicklingError: Can't pickle <type 'thread.lock'>: attribute
>>> lookup thread.lock failed*
>>>
>>> (I am running a Treaded server...)
>>>
>>> ???
>>>
>>> On Monday, October 8, 2012 9:17:40 PM UTC+2, Tomer Filiba wrote:
>>>
>>>> See allow_pickle at http://rpyc.sourceforge.net/**
>>>> api/core_protocol.html#api-**protocol<http://rpyc.sourceforge.net/api/core_protocol.html#api-protocol>
>>>>
>>>> https://github.com/**tomerfiliba/rpyc/blob/master/**
>>>> rpyc/core/protocol.py#L547<https://github.com/tomerfiliba/rpyc/blob/master/rpyc/core/protocol.py#L547>
>>>>
>>>> I have no idea where you got thread safety issues from
>>>> On Oct 8, 2012 9:02 PM, "samovar" <[email protected]> wrote:
>>>>
>>>>> Running as a service and trying to write a pickle file on the remote,
>>>>> I get:
>>>>>
>>>>> ValueError: pickling is disabled
>>>>>
>>>>> I read that pickling is disabled because it is not thread safe.
>>>>>
>>>>> Of course it's not thread safe. No one who is capable to use Rpyc
>>>>> would think it is.
>>>>> Static class data and @classmethod are not thread safe either. Should
>>>>> these also be disallowed? There not.
>>>>>
>>>>> I will use a locking mechanism to deal with thread safety issues for
>>>>> pickle. I should be able to do this.
>>>>> Making it totally unavailable is wrong.
>>>>>
>>>>> Am I wrong?
>>>>>
>>>>>
>>>>>
>>
>