2012-08-19 23 views
5

Tôi đang cố gắng truyền một đối tượng làm paramater bằng cách sử dụng RPyC từ máy khách đến máy chủ. Nhưng máy chủ không thể truy cập đối tượng và tôi nhận được một AttributeError.đối tượng truyền qua trong rpyc không thành công

server Code:

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

mã khách hàng

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

returns: AttributeError: cannot access 'name'.

Tôi đang sử dụng dịch vụ RPyC và accoding vào trang web, điều này sẽ làm việc.

Bất kỳ ý tưởng nào?

+3

David, Cảm ơn bạn đã chỉnh sửa - trông chuyên nghiệp hơn nhiều ... – Ben

Trả lời

5

Cấu hình dict cần được điều chỉnh ở phía máy khách và phía máy chủ.

Giá trị chính cần thay đổi là allow_public_attrs : True nếu chỉ biến công khai cần được truy cập hoặc allow_all_attrs : True nếu các biến và phương thức riêng tư và được bảo vệ cần được truy cập (tức là, bắt đầu bằng '_').

Về phía khách hàng, mã kết nối được viết như sau trong câu hỏi trên và trên mã máy chủ như sau:

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

Để biết thêm thông tin về tất cả các tùy chọn cấu hình có sẵn, xem:

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

Các vấn đề liên quan