<filename>language/python/modules/pyro4/pyro4_server.py
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# author: bigfoolliu


"""
pyro4模块使用
pip3 install Pyro4

用于远程方法调用，可以调用一个远程对象（位于另外一个进程或者另一台机器上）就像调用本地的对象一样
"""


import Pyro4


# Server服务器
@Pyro4.expose
class Server(object):
    def welcomeMessage(self, name):
        return ("Hi welcome " + str (name))


def startServer():
    """
    启动服务器
    """
    ns = Pyro4.locateNS()  # 获取本地的名字服务器
    print(f'name server:{ns}')

    daemon = Pyro4.Daemon()  # 运行一个后台进程

    uri = daemon.register(Server)  # 将Server注册为Pyro object对象
    ns.register("server", uri)  # 在名字服务器中注册该Pyro object对象

    print("Ready. Object uri =", uri)
    daemon.requestLoop()  # 启动事件循环等待被调用


def main():
    startServer()


if __name__ == '__main__':
    main()
