服务登记处
his.almanac的Python项目详细描述
一个简单的服务注册中心,在his中使用,但在其他地方很有用。
注册的服务必须扩展抽象基类,该基类充当契约或接口。
用法
服务的定义如下
importabcclassExampleContract(metaclass=abc.ABCMeta):@abc.abstractmethoddefmethod(self):passclassExampleService(ExampleContract):defmethod(self):print("I'm an example")
然后注册服务的实例:
fromalmanacimportservicess=ExampleService()services.register(s)
最后,要检索注册服务,您需要使用合同:
fromalmanacimportservicess=services.get(ExampleContract)
错误和异常
如果尝试将对象注册为没有抽象父级的服务,则它将引发 无效服务类型异常。
尝试获取尚未注册的服务将引发servicenotfounderror异常。
尝试使用抽象基类(例如契约)以外的任何内容获取服务将导致 系统引发无效合同异常