用于后台监控的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

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

推荐PyPI第三方库


热门话题
在OSGI中使用cxf生成的客户端时出现Java类装入器问题和JaxB异常   java为什么要在javamail中迭代多部分电子邮件中的部分?   并发编程问题   JFileChooser&&System中未调用java windowClosing。退出功能不正常?   SQL查询的java语法分析   java如何使用AspectJ声明字段上的警告   什么是java向量。元素()C#等价物   java解析Android应用程序中tornado web服务中的CSV文件   java我试过c2dm,我需要服务器端   java调整JPanel大小以适应新的JLabel图标   Java与Python脚本的通信   java使用Saxon通过XSLT生成URL   java net::ERR_complete_CHUNKED_编码200(OK)来自struts应用程序中的tomcat   java如何为我的窗格设置不同的位置?   java使用Cypher Neo4j获取给定类型的所有节点(从SQL世界中的tablename中选择*)   nio使用Java解析文件值   java使用WSDL生成REST客户端会是错误的方向吗?   java如何在我的应用程序中构建类映射?   java按钮。setEnabled在第一个循环中不起作用   xPath适用于最后一页,但不适用于第一页