2012-08-19 23 views
5

विफल रहता है मैं क्लाइंट से सर्वर पर RPYC का उपयोग कर एक पैरामीटर के रूप में ऑब्जेक्ट पास करने का प्रयास कर रहा हूं। लेकिन सर्वर ऑब्जेक्ट तक पहुंचने में असमर्थ है और मुझे एक विशेषता त्रुटि प्राप्त होती है।rpyc में ऑब्जेक्ट पास करने में

सर्वर कोड:

class AgentService(rpyc.Service): 
    def exposed_func(self, obj): 
    return obj.name 

ग्राहक कोड

self._conn = connect(agent_host, agent_port, config = {"allow_public_attrs" : True}) 
return self._conn.root.func(obj) 

returns: AttributeError: cannot access 'name'.

मैं RPyC सेवाओं का उपयोग कर रहा हूँ और वेबसाइट को accoding, इस काम करना चाहिए।

कोई विचार?

+3

डेविड, संपादन के लिए धन्यवाद - अधिक पेशेवर दिखता है ... – Ben

उत्तर

5

कॉन्फ़िगरेशन निर्देश को क्लाइंट साइड और सर्वर पक्ष पर समायोजित करने की आवश्यकता है।

बदलने के लिए मुख्य मूल्य allow_public_attrs : True है यदि केवल सार्वजनिक चरों को एक्सेस किया जाना चाहिए या allow_all_attrs : True यदि निजी और संरक्षित चर और विधियों तक पहुंचने की आवश्यकता है (यानी, जो '_' से शुरू होते हैं)।

ग्राहक पक्ष पर, कनेक्शन कोड ऊपर प्रश्न में के रूप में और सर्वर कोड पर इस प्रकार लिखा है:

server = ThreadedServer(MyService, port = 12345, 
         protocol_config = {"allow_public_attrs" : True}) 

सभी उपलब्ध config विकल्पों पर अधिक जानकारी के लिए देखें:

http://rpyc.sourceforge.net/api/core_protocol.html