状态和控制的持久性基于文件系统的标志。
cs.app.flag的Python项目详细描述
状态和控制的持久性基于文件系统的标志。
文件系统可见布尔标志 对于控制和状态, 允许轻松监控服务或其他状态, 以及旗管控制 用于同时监视旗帜的节目。
标记表示为具有大写名称的单个文件 在公共目录中(默认为$home/var/flags); 空的或丢失的文件是“false” 一个非空文件是“真的”。
flags类提供对该目录的简单pythonic访问。 它显示为一个可修改的映射,其键是标志名:
flags = Flags()
flags['UNTOPPOST'] = True
还有一个FraceDigIn类,提供了方便的方法和属性 用于维护与某个对象关联的标志集合 以对象的.name属性作为前缀的标志名 大写并附加下划线:
class SvcD(...,FlaggedMixin):
def __init__(self, name, ...)
self.name = name
FlaggedMixin.__init__(self)
...
def disable(self):
self.flag_disable = True
def restart(self):
self.flag_restart = True
def _restart(self):
self.flag_restart = False
... restart the SvcD ...
因此,对象设置为:
svcd = SvcD("portfwd")
print(svcd.flag_disable)
访问名为“portfwd_disable”的标志。
类FlaggedMixin
一个添加Frime*和FravaMeN**属性的MIXIN类。
这将定义实例的以下属性:
flags
:提供标志值的Flags
实例。flags_prefix
:感兴趣标志的前缀。flagname_
name:中的全名.flags
被称为name的标志。 这是.flags_prefix + '_' +
name 如果.flags_prefix
不是空的, 或者只要name否则。flag_
name:来自.flags
的值 被称为name的标志。 这是一个可设置的属性 将更改传播到.flags
。
方法FlaggedMixin.__init__(self, flags=None, debug=None, prefix=None)
P>初始化MIXIN。参数:
flags
:可选参数; 如果None
默认为新的默认值Flags()
。prefix
:可选前缀; 如果不提供前缀 从对象的.name
属性, 如果没有.name
类Flags
mro:collections.abc.MutableMapping
,collections.abc.Mapping
,collections.abc.Collection
,collections.abc.Sized
,collections.abc.Iterable
,collections.abc.Container
,FlaggedMixin
直接检查标志目录的映射。
方法Flags.__init__(self, flagdir=None, environ=None, lock=None, debug=None)
初始化Flags
实例。
参数:
flagdir
:保存标志状态文件的目录; 如果省略,则使用cs.env.FLAGDIR(environ)
中的值
environ
:要使用的环境映射, 默认值os.environ
lock
:控制多线程访问的类似于Lock
的互斥体; 如果省略,则不锁定debug
:调试模式,默认值False
函数lowername(s)
小写字母,将“u”转换为“-”。注意:不是大写的反面。
函数main(argv=None)
主程序:检查或修改标志。
函数main_flagset(argv=None, stdin=None)
“flagset”命令的主程序。
类PolledFlags
mro:builtins.dict
维护标志目录当前状态的一种映射。
定期更新。
这允许应用程序非常频繁地查询标志 而不是敲打文件系统。
功能truthy(value)
决定一个值是否被认为是真的。
字符串转换为:
'0'
:False
'1'
:True
'true'
:True
(不区分大小写)'false'
:False
(不区分大小写)- 其他字符串值保持不变。
其他类型用bool()
转换。
函数uppername(s)
大写字母,将某些字符转换为''.'或'.'.