规避控制器允许从配置创建程序。

evasion-director的Python项目详细描述


Introduction

规避项目允许从配置创建程序。

这是通过从配置加载“控制器部分”来实现的。一个 控制器是一个python包或模块,它提供一些功能。 它在其部分中给出了所有配置。逃犯主任 以类似于Linux上init.d的方式管理控制器。逃避 导演启动并加载每个部分。

最常见的逃逸指挥控制器使用的是逃逸机构。这个 管理“代理人”。代理是一个python包或模块。特工们习惯于 控制硬件设备或服务。该机构提供了一个设备树 可以抽象方式引用的节点。

控制器、代理和所有相关方之间的消息传递可以是 使用逃走信使完成。此项目部分当前正在重写 使用zeromq。旧版本使用了pydispatch、stomp、morbid的组合 经纪人和扭曲。此消息是完全可选的。

注:逃逸机构项目已与局长代码库合并。 “evasion.agency”包现在由evasion director代码库提供。

github:

Basic Examples

Simplest configuration

最基本的例子是使用最小配置“app.ini”:

[director]
messaging = 'no'

然后可以从命令行运行此命令:

$ director --config app.ini
evasion.director.manager.Manager INFO main: running.
evasion.director.manager.Manager INFO controllerSetup: loading controllers from config.
evasion.director.manager.Manager INFO controllerSetup: 1 controller(s) recovered.
evasion.director.manager.Manager WARNING Ctrl-C, Exiting.
$

唯一的控制器负载是“控制器”控制器。这不是很有用 什么都不跑。

Run a program

您可以使用命令行控制器运行和管理任何类型的程序。 例如:

[director]
messaging = 'no'

[command_line_example]
# Set this to 'yes' to stop this controller from being used.
disabled = 'no'

# This is optional and allows the order in which controllers are started
# to be set.
order = 1

# Where the "Controller" class is to be found.
controller = 'evasion.director.controllers.commandline'

# The command line specific options:
#
# The command to run.
command = 'ls'
# Where the command is to be run from.
workingdir = '/tmp'

运行此配置将获得:

$ director --config app.ini
root WARNING No valid logging found in configuration. Using console logging.
evasion.director.manager.Manager INFO main: running.
evasion.director.manager.Manager INFO controllerSetup: loading controllers from config.
evasion.director.manager.Manager INFO controllerSetup: 2 controller(s) recovered.
evasion.director.controllers.commandline DEBUG setUp: command <ls> workingdir </tmp>
evasion.director.manager.Manager INFO appmain: The controller '<Controller: order:1 name:command_line_example disabled:no>' needs to be started.
evasion.director.controllers.commandline INFO start:  'ls' running. PID 87808
evasion.director.manager.Manager INFO appmain: Started ok 'command_line_example'? 'True'
1564b4fc7dd26  ics41562  icssuis1316027648  launch-0FvLcQ  launch-7vMUyC  launch-9uZ0bO  launch-ASdWau  launch-RUjEPx  launchd-460.ZFsfn1
evasion.director.manager.Manager INFO appmain: The controller '<Controller: order:1 name:command_line_example disabled:no>' needs to be started.
evasion.director.controllers.commandline INFO start:  'ls' running. PID 87809
evasion.director.manager.Manager INFO appmain: Started ok 'command_line_example'? 'True'
1564b4fc7dd26  ics41562  icssuis1316027648  launch-0FvLcQ  launch-7vMUyC  launch-9uZ0bO  launch-ASdWau  launch-RUjEPx  launchd-460.ZFsfn1
evasion.director.manager.Manager INFO appmain: The controller '<Controller: order:1 name:command_line_example disabled:no>' needs to be started.
evasion.director.controllers.commandline INFO start:  'ls' running. PID 87810
evasion.director.manager.Manager INFO appmain: Started ok 'command_line_example'? 'True'
icssuis1316027648  launch-0FvLcQ  launch-7vMUyC  launch-9uZ0bO  launch-ASdWau  launch-RUjEPx  launchd-460.ZFsfn1
evasion.director.manager.Manager WARNING Ctrl-C, Exiting.
evasion.director.controllers.commandline INFO stop: stopping the process PID:'87810' and all its children.
evasion.director.tools.proc INFO kill: pid <87810>
evasion.director.controllers.commandline WARNING pkill: call failure [Errno 3] No such process
$

控制器加载控制器部分。命令行控制器是 起动。“ls”命令列出“/tmp”目录的内容。这个 输出被捕获并记录。然后,局长注意到命令 退出需要再次运行,流程重复。导演会保留 运行组成程序的所有“控制器”。

Use the Agency

最小代理配置是:

[director]
messaging = 'no'

[agency]
#disabled = 'yes'
controller = 'evasion.director.controllers.agencyctrl'

如果运行此命令,您将看到:

$ director --config ../app.ini
evasion.director.manager.Manager INFO main: running.
evasion.director.manager.Manager INFO controllerSetup: loading controllers from config.
evasion.director.manager.Manager INFO controllerSetup: 2 controller(s) recovered.
evasion.director.controllers.agencyctrl INFO setUp: setting up the agency and recovering agents.
evasion.agency.manager.Manager INFO load: 0 agent(s) present.
evasion.agency.manager.Manager WARNING There are no agents to set up.
evasion.director.controllers.agencyctrl INFO setUp: agents loaded '0'.
evasion.director.manager.Manager INFO appmain: The controller '<Agency: order:2 disabled:no>' needs to be started.
evasion.agency.manager.Manager WARNING There are no agents to start.
evasion.director.manager.Manager INFO appmain: Started ok 'agency'? 'True'
evasion.director.manager.Manager WARNING Ctrl-C, Exiting.
evasion.agency.manager.Manager WARNING There are no agents to stop.
evasion.agency.manager.Manager WARNING There are no agents to tear down.

这将加载代理,但没有代理可供其管理。

如果我们加上测试代理来给代理管理一些东西, 现在配置如下:

[director]
messaging = 'no'

[agency]
#disabled = 'yes'
controller = 'evasion.director.controllers.agencyctrl'

    # indent is convention to visually distinguish agents from controllers.
    [testswipe]
    cat = 'swipe'
    agent = 'evasion.agency.agents.testing.fake'

如果运行此命令,您将看到:

$ director --config ../app.ini
2012-05-29 17:21:56,674 evasion.director.manager.Manager INFO main: running.
2012-05-29 17:21:56,675 evasion.director.manager.Manager INFO controllerSetup: loading controllers from config.
2012-05-29 17:21:56,711 evasion.director.manager.Manager INFO controllerSetup: 2 controller(s) recovered.
2012-05-29 17:21:56,711 evasion.director.controllers.agencyctrl INFO setUp: setting up the agency and recovering agents.
2012-05-29 17:21:56,712 evasion.agency.manager.Manager INFO load: 1 agent(s) present.
2012-05-29 17:21:56,712 evasion.director.controllers.agencyctrl INFO setUp: agents loaded '1'.
2012-05-29 17:21:56,712 evasion.director.manager.Manager INFO appmain: The controller '<Agency: order:2 disabled:no>' needs to be started.
2012-05-29 17:21:56,712 evasion.director.manager.Manager INFO appmain: Started ok 'agency'? 'True'
2012-05-29 17:21:58,134 evasion.director.manager.Manager WARNING Ctrl-C, Exiting.
$

Issues

其他规避的所有问题-*项目部分应记录在 规避主管项目。

Release Notes

1.1.6

逃逸机构储存库代码已与逃逸主管合并。 实际上这意味着逃犯主任现在提供 “evasion.agency”命名空间。导演不再依赖 “逃避机构”。

1.1.5:

在本版本的修复问题“默认行为更改:失败的控制器 进口代理导致出口。现在,控制器将退出 引发异常。

1.1.4:

Github里程碑释放https://github.com/oisinmulvihill/evasion-director/issues?milestone=1&state=closed

固定的

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用MVC设计模式观察嵌套对象   java将多个客户端连接到服务器   合并Java Web应用程序   Spring Security中未捕获java AuthenticationSuccessEvent   java Firebase JSON到Arraylist内部的Arraylist,存在对象问题   在Java15的sealedclasses特性中,final类和非密封类之间有什么区别?   java我可以使用数组。copyOf制作二维数组的防御副本?   java球不会在屏幕上移动   Java类如何在同一个文件中包含两个类?   java使用“Character.isWhiteSpace”删除所有空白   java阻止在RealmList中保存时创建领域对象   如何仅在ConnectionFactory上使用Java JMS身份验证   spring可以强制java对象在运行时实现接口吗?   socket无法在JAVA中使用TCP启用双工模式通信