Hi,
I want to run this service on the boot computer.
I think to run it on service, but I have a problems on it.
Do you have idea?
Thanks,
Yehonatan


בתאריך יום רביעי, 10 בספטמבר 2014 12:28:39 UTC+3, מאת Yehonatan Arad:
>
> I succeed:
>
> *on the server:*
> import rpyc
> from rpyc.utils.server import ThreadedServer, ForkingServer, OneShotServer
>
> class DpaServerService(rpyc.Service): 
> def exposed_open(self, filename):
> return open(filename, "r")
>
> if __name__ == '__main__':
> server = ThreadedServer(DpaServerService, port = 12345)
> server.start()
>
>
> *and on the client:*
> c = rpyc.connect("IP","PORT")
> remote= c.root.open("File")
> local = open("File","w")
> shutil.copyfileobj(remote, local)
> remote.close()
> local.close() 
>
>
>
>
> בתאריך יום רביעי, 10 בספטמבר 2014 09:38:33 UTC+3, מאת Yehonatan Arad:
>>
>> Thanks very much. I success now to copy the file, on classic mode.
>> Now i want to change the method to service mode. (because security 
>> issues).
>> What I need to do for this?
>>
>> On server I ran this file:
>> class DoStuffService(rpyc.Service):
>>    def on_connect(self):
>>        "Do some things when a connection is made"
>>    def on_disconnect(self):
>>        "Do some things AFTER a connection is dropped"
>>    def exposed_func1(self, *args, **kws):
>>        "Do something useful and maybe return a value"
>>    def exposed_func2(self, *args, **kws):
>>        "Like func1, but do something different"
>>
>> if __name__ == '__main__':
>>    rpyc.utils.server.ThreadedServer(DoStuffService).start()
>>
>> On client I tried to connect such:
>> c = rpyc.connect(IP,PORT,service = "DoStuffService")
>>
>> I get this error, why it can be?
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in <module>
>>   File "C:\Python26\lib\site-packages\rpyc\utils\factory.py", line 89, in 
>> connect
>>     s = SocketStream.connect(host, port, ipv6 = ipv6, keepalive = 
>> keepalive)
>>   File "C:\Python26\lib\site-packages\rpyc\core\stream.py", line 132, in 
>> connect
>>     return cls(cls._connect(host, port, **kwargs))
>>   File "C:\Python26\lib\site-packages\rpyc\core\stream.py", line 102, in 
>> _connect
>>     s.connect(sockaddr)
>>   File "<string>", line 1, in connect
>> socket.error: [Errno 10061] No connection could be made because the 
>> target machine actively refused it
>>
>>
>> בתאריך יום רביעי, 10 בספטמבר 2014 08:02:07 UTC+3, מאת Tomer Filiba:
>>>
>>> Use c.builtin.open (or builtins, can't remember), not c.root.open
>>> On Sep 10, 2014 1:05 AM, "Yehonatan Arad" <[email protected]> wrote:
>>>
>>>> Hi Tomer,
>>>> I want to get file from server to the client.
>>>> I configured the open function on the rpyc_classic.py but I didn't 
>>>> success to call it from the other computer.
>>>> I got this error:
>>>> Can you help me?
>>>> Thanks
>>>>
>>>> >>> remote = c.root.open("FILE")
>>>> Traceback (most recent call last):
>>>>   File "<stdin>", line 1, in <module>
>>>>   File "C:\Python26\lib\site-packages\rpyc\core\netref.py", line 150, 
>>>> in __getattr__
>>>>     return syncreq(self, consts.HANDLE_GETATTR, name)
>>>>   File "C:\Python26\lib\site-packages\rpyc\core\netref.py", line 71, in 
>>>> syncreq
>>>>     return conn.sync_request(handler, oid, *args)
>>>>   File "C:\Python26\lib\site-packages\rpyc\core\protocol.py", line 441, 
>>>> in sync_request
>>>>     raise obj
>>>> AttributeError: 'SlaveService' object has no attribute 'exposed_open'
>>>>
>>>> ========= Remote Traceback (1) =========
>>>> Traceback (most recent call last):
>>>>   File "C:\Python26\lib\site-packages\rpyc\core\protocol.py", line 305, 
>>>> in _dispatch_request
>>>>     res = self._HANDLERS[handler](self, *args)
>>>>   File "C:\Python26\lib\site-packages\rpyc\core\protocol.py", line 541, 
>>>> in _handle_getattr
>>>>     return self._access_attr(oid, name, (), "_rpyc_getattr", 
>>>> "allow_getattr", getattr)
>>>>   File "C:\Python26\lib\site-packages\rpyc\core\protocol.py", line 507, 
>>>> in _access_attr
>>>>     return accessor(obj, name, *args)
>>>>   File "C:\Python26\lib\site-packages\rpyc\core\service.py", line 69, 
>>>> in _rpyc_getattr
>>>>     return getattr(self, name)
>>>> AttributeError: 'SlaveService' object has no attribute 'exposed_open'
>>>> "
>>>>
>>>> בתאריך יום שלישי, 17 בפברואר 2009 14:52:05 UTC+2, מאת Tomer Filiba:
>>>>>
>>>>> nice, but you might want to check out rpyc/utils/classic.py -- it 
>>>>> already has file transfer functionality :)
>>>>> it does require the classic mode, but assuming you can get a remote 
>>>>> file object,
>>>>> you can just use shutil.copyfileobj (you should check out shutil, btw, 
>>>>> if you're new to python)
>>>>>
>>>>> i.e.
>>>>>
>>>>> # == server ==
>>>>> class FileService(rpyc.Service):
>>>>>     def exposed_open(self, filename, mode = "r"):
>>>>>         return open(filename, mode)
>>>>>
>>>>> # == client ==
>>>>> c = rpyc.connect(host, port)
>>>>>
>>>>> # copy to client
>>>>> remote = c.root.open("/foo/bar")
>>>>> local = open("/tmp/foo/bar", "w")
>>>>> shutil.copyfileobj(remote, local)
>>>>>
>>>>> # copy to server
>>>>> local = open("/spam/bacon")
>>>>> remote = c.root.open("/tmp/spam/bacon", "w")
>>>>> shutil.copyfileobj(local, remote)
>>>>>
>>>>>
>>>>> hope it helps,
>>>>> -tomer
>>>>>
>>>>>
>>>>> On Tue, Feb 17, 2009 at 14:30, CinnamonDonkey <
>>>>> [email protected]> wrote:
>>>>>
>>>>>>
>>>>>> No worries! I worked it out :)
>>>>>>
>>>>>> SERVER SHOULD BE:
>>>>>>
>>>>>>  class MyService( rpyc.Service ):
>>>>>>    class exposed_FileTransfer(  ):
>>>>>>       def exposed_Open( self, filename ):
>>>>>>         print "FILE TRANSFER OPEN FUNCTION CALLED - " + filename
>>>>>>        return 0
>>>>>>
>>>>>>  if __name__ == "__main__":
>>>>>>    s = ThreadedServer( MyService, port = 1234, reuse_addr = True )
>>>>>>    s.start()
>>>>>>
>>>>>>
>>>>>> CLIENT SHOULD BE:
>>>>>>
>>>>>>  if __name__ == "__main__":
>>>>>>    connection = rpyc.connect( options.serviceHostName,
>>>>>> options.servicePortNum )
>>>>>>     tf = connection.root.FileTransfer()
>>>>>>    tf.Open(  "SPANKING~!!!" )
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 17 Feb, 12:25, CinnamonDonkey <[email protected]>
>>>>>> wrote:
>>>>>> > I have written this on my server side:
>>>>>> >
>>>>>> >   class MyService( rpyc.Service ):
>>>>>> >     class exposed_FileTransfer(  ):
>>>>>> >       def exposed_Open( filename ):
>>>>>> >         print "FILE TRANSFER OPEN FUNCTION CALLED - " + filename
>>>>>> >         return 0
>>>>>> >
>>>>>> >   if __name__ == "__main__":
>>>>>> >     s = ThreadedServer( MyService, port = 1234, reuse_addr = True )
>>>>>> >     s.start()
>>>>>> >
>>>>>> > But on my client side I can't figure how to call it. I have tried:
>>>>>> >
>>>>>> >   if __name__ == "__main__":
>>>>>> >     connection = rpyc.connect( options.serviceHostName,
>>>>>> > options.servicePortNum )
>>>>>> >     connection.root.FileTransfer.Open( "SPANKING~!!!" )
>>>>>> >
>>>>>> > But I get the error:
>>>>>> >
>>>>>> >   TypeError: unbounded method expose_Open() must be called with
>>>>>> > exposed_FileTransfer instance as first argument.
>>>>>> >
>>>>>> > eh? I tried:
>>>>>> >
>>>>>> >   if __name__ == "__main__":
>>>>>> >     connection = rpyc.connect( options.serviceHostName,
>>>>>> > options.servicePortNum )
>>>>>> >     ft = connection.root.FileTransfer
>>>>>> >     ft.Open( "SPANKING~!!!" )
>>>>>> >
>>>>>> > and that does not work... I'm confussed.
>>>>>> >
>>>>>> > Please help.
>>>>>> >
>>>>>> > On 17 Feb, 09:17, CinnamonDonkey <[email protected]>
>>>>>> > wrote:
>>>>>> >
>>>>>> > > Thanx for the reply RedBaron.
>>>>>> >
>>>>>> > > I agree, I don't think it is the best way of doing a file 
>>>>>> transfer but
>>>>>> > > based on my limited knowledge of Python and RPyC I'd rather spend 
>>>>>> my
>>>>>> > > time learning a few systems well than lots of systems badly. At 
>>>>>> least
>>>>>> > > that is my theory at the moment, everything is subject to change 
>>>>>> ;-).
>>>>>> >
>>>>>> > > I do need, RPC for some genuine tasks later so I figured this 
>>>>>> would be
>>>>>> > > a good starting point as it satisfies two goals. How to transfer 
>>>>>> my
>>>>>> > > file and how to use RPyC :-D.
>>>>>> >
>>>>>> > > I have to say, I am very impressed with this Python'ing lark... Oh
>>>>>> > > what I have been missing all these years ;-).
>>>>>> >
>>>>>> > > On 17 Feb, 09:05, redbaron <[email protected]> wrote:
>>>>>> >
>>>>>> > > > Are you sure that RPyC is a good way to do it? I'm not sure but 
>>>>>> try to
>>>>>> > > > open file and then send file handler to remote service. As it 
>>>>>> said in
>>>>>> > > > docs all objects are passed by reference, so reading from that 
>>>>>> handler
>>>>>> > > > on remote side will actually make transfer from local machine to
>>>>>> > > > remote onee. I'm not sure will it work or not, but you could 
>>>>>> try it =)
>>>>>> >
>>>>>> > > > f = open(/path/to/file,"rb")
>>>>>> > > > ... send of on remote side
>>>>>> > > > ....do f.read() on remote side.
>>>>>> >
>>>>>> > > > be careful that f.read() will allocate memory equal to file 
>>>>>> size, if
>>>>>> > > > its really big then try to read it chunk by chunk like:
>>>>>> >
>>>>>> > > > g = open("/path/where/to/write","wb")
>>>>>> > > > chunk = f.read(1024*1024)
>>>>>> > > > while chunk:
>>>>>> > > >   g.write(chunk)
>>>>>> > > >   chunk = f.read(1024*1024)
>>>>>> >
>>>>>> >
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> -- 
>>>>> An NCO and a Gentleman
>>>>>  
>>>>  -- 
>>>>
>>>> --- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "rpyc" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"rpyc" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to