Я пытаюсь реализовать сервер RP C. Моя идея, что все логики c за обработкой RP C находятся в родительском классе, и бизнес-логики c могут быть реализованы как функции унаследованного класса. Чтобы сделать функцию доступной, можно использовать декоратор.
class HelloServer(MyRPC):
@MyRPC.rpc
def hi(self,name):
return "hi, {}".format(name)
@MyRPC.rpc
def hi_long(self,name):
time.sleep(30)
return "hi, long {}".format(name)
MyRPC
класс выглядит так:
from pebble import ProcessPool
class MyRPC():
pool = ProcessPool()
functions = {}
@classmethod
def rpc(cls, f):
def registry_method(self, f):
self.functions[f.__name__] = f
registry_method(cls,f)
Однако, когда я пытаюсь вызвать его:
future = self.pool.schedule(self.functions[call['method']],call['args'], call['kwargs'],timeout=3600)
У меня есть:
Can't pickle <function HelloServer.hi at 0x7f2305c84dd0>: it's not the same object as __main__.HelloServer.hi