jasper是一个系统,用于监视需要保持运行的程序。

jasper-sys的Python项目详细描述


#贾斯珀系统[![构建状态](https://travis-ci.org/fabiocody/jasper-sys.svg?branch=master)](https://travis ci.org/fabiocody/jasper sys)



\overview

例如,假设您有一组用于智能家庭系统的脚本。当然你不希望这些脚本停止工作,否则你的智能家居系统会表现怪异,或者根本不工作。jasper可以帮助您保持脚本运行,还可以设置一些自定义操作,以便在进程状态更改时执行(例如,用于通知或日志记录)。



由于jasper是为只与python 3.4+一起工作而编写的,因此您必须使用正确版本的“pip”(通常“pip3”应该可以工作)。
`````
sudo pip3 install jasper sys
````



首先,您必须创建一个json文件来存储所有模块信息。因为要将文件路径传递给程序,所以可以随意命名,并将其放置在任何位置。
下面是一个示例,说明它应该是什么样的:{

``json
{
“module\u name”:{
“command”:“/path/to/executable arg1 arg2”,
“start\on\u boot”:true,
“在崩溃时重新启动”:true
}
}
```

“start_on_boot”和“restart_on_crash”字段分别指示是否希望程序在jasper启动时立即启动,以及是否希望程序在崩溃时重新启动。


您将创建一个脚本来获取所有内容并按照您想要的方式进行调整。
下面是一个示例

``python
from jaspecore import jaspecore
from datetime import datetime

def log_restart(module):
''log a message when a module restart s'
with open('/path/to/logfile',“a”)作为f:
f.write('{0}-{1}已重新启动。'.format(datetime.now(),module))

def log_start_failure(module):
“当模块无法启动时记录消息”
,open('/path/to/logfile','a')作为f:
f.write('{0}-{1}无法启动。'.format(datetime.now(),module)

callback_table={
“restart”:日志重新启动,
“exec_fail”:日志启动失败
}


jaspecore('/path/to/modules.json',callback_table=callback_table,start_all=true)
```

“jaspecore”类是jasper系统的主接口。启动系统所需要做的就是调用它。该类有4个参数:
-`modules戋file<;str>;`:json文件的路径;
-`callback戋table<;dict>;(可选)`:类型为{str:function}的字典(有关详细信息,请参见下文);
-`start戋all<;bool>;(可选,默认值为false)`:标志,指示是否希望在系统启动时启动所有已启用的模块启动;
-'ReStestsNo.lt;int & gt;(可选,缺省=-1):每个模块重启的最大次数(-1=INF)。
BR/> BR/>α-回调表
BR/>可以提供在模块生命周期的某些点上执行的一些回调。每个回调只需要一个函数,只需要一个参数,即模块名。< BR/>可用的回调条目是:
-“开始”:在模块启动时执行;
-“重新启动”:在模块重新启动时执行;
-STOST.Read:在达到最大重启次数时执行;
-Excel失败:在模块失败时执行:开始时。

列出的条目必须用作要提供给“jaspecore”类的字典的键。




\jaspertl

`jaspertl'是远程的与核心系统的接口。
如果您在jasper core正在运行的机器上,只需在终端窗口中键入“jaspertl”。如果您在远程计算机上,请键入“jaspertl-c host”以连接到远程jasper core。
连接到jasper core会话后,可以
-检查哪些模块正在运行,哪些没有运行;
-启动/停止模块。



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

推荐PyPI第三方库


热门话题
eclipse如何将LWUIT主题文件加载到Java项目中?   JavaJPA HibernateFetchType。渴望和获取模式。加入非主键   java为单个和多个对象创建对象容器   java在到达末尾时在viewpager2中加载更多项目   java我怎么能忽略它。解压时存储DS_和MACOSX文件?   java我无法使用ApachePOI3.10读取xlsx文件   java为什么我在Android应用程序的webView中看到广告(我没有注册任何广告)   在Java中,PrintWriter write()方法在哪里写入数据   c#ProcessStartInfo挂在“WaitForExit”上?为什么?   安卓中的java解析查询问题   java Android摄像头在拍照时禁用   爪哇交货过早地从jsprit的仓库提货   java退避算法仿真   java我的计数反转算法有什么问题?   java什么导致一个类中的变量受到另一个类的影响?   JavaVaadin和Spring引导问题   java无法使用writerInterceptor拦截jersey资源方法   java如何根据配置选择RedisCluster、RedisStandalone和Sentinel连接?   java GSON/如何解析数字   java:字节码中的字符串concat转换为StringBuilder