用于后台监控的api
angelic的Python项目详细描述
用于后台监控的api
安装
从项目根目录:
$ python setup.py install
或者使用pip安装:
$ pip install angelic
用法
将其添加到程序顶部:
from angelic import Daemon daemon = Daemon('app_name')
然后包装循环功能:
@daemon.daemonize def loop(...): while True: ...
或者指定一个间隔,让它自动循环并等待指定的秒数:
@daemon.daemonize(interval=10) def loop(...): ...
然后添加到程序底部:
daemon.run(...)
守护函数的参数将从要运行的调用中传递。
有关启动和停止守护进程的更多选项,请检查下面的参数解析。
请参见此处的示例实现:http://pastebin.com/uZjxU99S
配置
使用该关键字指定PID路径。否则,它将查找所有PID路径 在可能的配置路径中,最后将选择/var/run/$daemon_name.pid:
daemon = Daemon('myapp', pid_path='~/myapp.pid')
配置文件将根据应用程序的名称自动加载,除非 配置路径被传递给守护进程。有关详细信息,请参见pypi包confutil 关于配置逻辑和用法。
配置文件从最权威到最不权威的解析顺序是 (对于名为“spam”的守护进程):
- ./.spam.conf
- ./.spam.cfg
- ~/.spam.conf
- ~/.spam.cfg
- ~/.config/.spam.conf
- ~/.config/.spam.cfg
- ~/.config/spam/config.conf
- ~/.config/spam/config.cfg
- ~/.config/spam/config
- /etc/.spam.conf
- /etc/.spam.cfg
- /etc/spam/config.conf
- /etc/spam/config.cfg
- /etc/spam/config
要指定显式配置文件,请传入路径。接口将像一个dict, 特别是configobj对象:
daemon = Daemon('myapp', config_path='~/.myapp.config') password = daemon.config['password']
重定向stdout或stderr
默认情况下,守护进程仍会将其stderr打印到stderr,并静噪stdout。 若要更改此行为,请将“关键字”设置为“自身”,或将“无”设置为“静音”:
# prints stderr to stderr daemon = Daemon('myapp') # Keeps stdout, but mutes stderr daemon = Daemon('myapp', stdout='stdout', stderr=None) # Mutes both stdout and stderr daemon = Daemon('myapp', stderr=None) # Writes stderr to a file at path /var/log/myapp_raw_stderr daemon = Daemon('myapp', stderr='/var/log/myapp_raw_stderr')
建议保留stderr(默认),以便可以调试程序中的异常。
日志记录
通过将参数传递给守护进程的 日志路径。例如:
daemon = Daemon(debug_log='/var/log/myapp_debug.log', error_log='/var/log/myapp_error.log') daemon.log.error('Encountered an error!')
其他可能的记录器参数包括信息日志、警告日志和关键日志。 如果关键字参数中没有提供,则将检查配置以查看调试日志等。
参数分析
一个简单的“开始”、“停止”、“重新启动”状态界面,可以提供以下代码:
daemon.parse_args()
要向将传递给循环的start命令添加参数,请执行以下操作,首先创建子参数:
@daemonize def loop(debug=False): ... def main(): import argparse parser = argparse.ArgumentParser() subparsers = daemon.setup_args(parser) subparsers['start'].add_argument('--debug', '-d', action='store_true') daemon.parse_args(parser)
发行说明
0.1.2: | Just updated README with the simpler argparse functionality. |
---|---|
0.1.1: | Removed requirement to create argparser ArgumentParser.
Now, start/stop/restart/status interface can be created with just ^{ |
0.1.0: | Daemonization works according to examples in this README |
0.0.1: | Project created |