6 Matching Annotations
- Jun 2018
-
pure-earth-7284.herokuapp.com pure-earth-7284.herokuapp.com
-
OpenStack的插件机制,是通过stevedore这个库实现的
-
- May 2018
-
blog.csdn.net blog.csdn.net
-
最后一种使用插件的方式,相当于Drivers加载和Extensions加载的结合。它允许在给定的entry points组名下有同名的entry point,这样,在给定entry points组名和entry point名的情况下,hook式加载会加载所有找到的插件。
Hook式加载
-
ExtensionManager和DriverManager略有不同,它不需要提前知道要加载哪个插件,它会加载所有找到的插件。 要想调用插件,需要使用map方法,需要传给map一个函数,这里就是format_data函数,针对每个扩展都会调用该函数。format_data函数有两个参数,分别是Extension实例和map的第二个参数da
不需要知道插件的具体名字,指定namespace='xxxx',则会加载xxxx entry point group下的所有插件(扩展)
要调用插件 ==> manager.map(func, args) ==> namespace中的每个插件都会调用该函数func ==> manager.map(func, args) return 一个序列,序列中的每个元素就是每个插件调用回调函数的返回值
-
定义并注册插件
注册插件是通过 setup.py 来注册插件的
from setuptools import setup, find_packages setup( name='test', version='1.0', packages=find_packages(), entry_points={ 'namespace': [ 'name = module:importable' ], }, )
-
在stevedore中,有三种使用插件的方式:Drivers、Hooks、Extensions
Drivers:一个名字对应一个entry point
Hooks:一个名字对应多个entry point
Extensions:多个名字对应多个entry point
Tags
Annotators
URL
-
-
blog.csdn.net blog.csdn.net
-
根据每个插件在entry point中名字和具体实现的数量之间的对应关系不同,stevedore提供了多种不同的类来帮助开发者发现和载入插件,如下图所示:
-