私は以下のような初期化されたクラスを持っているリモートサーバを持っています。私はallow public attrsとしてプロトコル設定をtrueに設定しています。クライアント側では rpycのリモートオブジェクトを返す
import rpyc
class SharedClass(object):
def __init__(self,string):
print string
def action(self):
print 'i am doing something'
s=SharedClass('hi')
class MyService(rpyc.Service):
def on_connect(self):
pass
def on_disconnect(self):
pass
def exposed_get_shared(self):
return s
if __name__=='__main__:
from rpyc.utils.server import ThreadedServer
t=ThreadedServer(MyService,port=18861,protocol_config={"allow_public_attrs":True})
t.start()
私は私がエラーに
**クライアントを取得しています関数内で接続を行うと、オブジェクト を返すようにしようとすると のに対し、それが働いている直接接続しようとした場合
* ***直接接続**
>>>Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
>>>Type "help", "copyright", "credits" or "license" for more information.
>>>conn=rpyc.connect('localhost',18861)
>>>share=getattr(conn.root,'get_shared')
>>>share
<bound method MyService.exposed_get_shared of <__main__.MyService
object at 0x011BA698>>
>>>share=getattr(conn.root,'get_shared')()
>>>share
<__main__.SharedClass object at 0x00B6ED30>
>>>share.action()
i am doing something
私はエラーを取得しています機能でそれを実行しようとした場合、(
>>>def returnObject(objName, host, port):
... conn = rpyc.connect(host, port)
... print conn
... attr = getattr(conn.root, 'get_' + objName)()
... print attr
... return attr
>>>share=returnObject('shared','localhost',18861)
<rpyc.core.protocol.Connection 'conn2' object at 0x0108AAD0>
<__main__.SharedClass object at 0x00B6ED30>
>>>share
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\rpyc\core\netref.py", line 168,
in __repr__
return syncreq(self, consts.HANDLE_REPR)
File "C:\Python27\lib\site-packages\rpyc\core\netref.py", line 69,
in syncreq
return conn().sync_request(handler, oid, *args)
AttributeError: 'NoneType' object has no attribute 'sync_request'
私の目的は、オブジェクトをサーバーで初期化し、多くのクライアントがそのオブジェクトにアクセスできるようにすることです。初期化されたクラスはスレッドセーフであるため、複数のクライアントが使用できます。
私はこれをやっている間に何かが足りなくなっていることを認識しています。
-
Adhithya
私はconnおよびATTR返す場合は、私のコードは動作しています。ご協力いただきありがとうございます。 – Adhithya