python многопроцессорные декораторы (ошибка расслаивания) - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь реализовать сервер 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...