守护进程如何才能向WebSocket客户端推数据线要压着才能充电

1.什么是进程守护系统?  
  进程守护系统,用于监控指定的进程,当发现目标进程不再正常工作时,就关闭该进程,并重启它。
  在什么情况下使用进程守护系统了?比如说,我们的某个服务器软件,在上线后出现一个严重的bug,该bug虽然很难出现,但是只要一出现,整个服务都会停掉(进程没有崩溃,只是不再提供服务)。此时,重启服务软件,又会开始正常工作。
  对于这样严重的bug,必须要查清楚并解决掉的。但是,基于以下两个原因:
(1)系统已经对用户开放,服务不能停。不可能说系统先下线,直到bug被解决掉后再重新上线。
(2)bug很难重现,可能需要加日志,不断地跟踪排查,这很可能是一场持久战。
 & 为了让系统继续线上运行,在bug解决之前,必须要保证系统停止服务之后,能迅速重新启动恢复服务。此时,使用进程守护系统是最恰当不过的了。
   OrayGuard就是为达到这一目的,实现了一个进程守护系统。一个守护者程序,可以守护同一台机器上的多个进程。
2.进程守护系统的实现及使用
   OrayGuard守护者对被守护进程的管理使用的是心跳机制,其原理描述如下:
(1)被守护进程定时向守护者报告(发送心跳),以表明自己是在正常提供服务。
(2)如果守护者发现某个被守护进程连续一段时间都没有心跳过来,就关闭对应的进程,然后再启动对应的程序。
  在OrayGuard系统中,为了方便使用,已经做了很多工作,直接提供如下设施给使用者。
(1)在守护者这一方:提供了可直接运行的exe,双击即可运行起来。
(2)在被守护进程这一方:提供了OrayGuard.Core.dll,使用者只要调用其中的GuardianProxy静态类的几个方法,即可完成所有工作。&
/// &summary&
/// 与守护服务进行通信的Proxy,提供给被守护进程直接使用。
/// &/summary&
public static class GuardianProxy
/// &summary&
/// 初始化Proxy,并向守护服务注册当前进程。
/// &/summary&
/// &param name="guardServerPort"&守护进程提供服务的Port&/param&
/// &param name="timeoutInSecs"&超时间隔。单位:秒&/param&
public static void Initialize(int guardServerPort, int timeoutInSecs);
/// &summary&
/// 向守护服务激活当前进程一次。
/// &/summary&
public static void Activate();
/// &summary&
/// 向守护服务注销当前进程。
/// &/summary&
public static void Dispose();
&  在被守护方:
(1)进程启动时,调用GuardianProxy的Initialize方法,即可向守护者注册当前进程。(端口号就填守护者配置文件中设定的端口)
(2)进程内需要定时(比如10秒一次)检测自己是否仍在正常提供服务,如果是,则调用GuardianProxy的Activate方法,向守护者发送心跳。
(3)当进程正常退出时,调用GuardianProxy的Dispose方法向守护者注销。
&3.Demo以及下载
  最后,我们编写了一个用于演示的被守护进程的项目,整个系统运行起来后,效果如下:
&  (注意:实际测试时,不要调试,而是要双击演示项目debug目录下的TestProcess.exe运行演示,否则,模拟故障后,演示进程会被关闭,但是无法被重启。因为,调试时,检测到的是TestProcess.vshost.exe)
&  。压缩包中包含如下内容:
(1)OrayGuard守护者:可直接运行的守护者程序。
(2)SDK:供被守护进程使用的SDK。
(3)TestProcess:用于演示的被守护进程的项目源码。
&更多分享:
阅读(...) 评论()查看: 8800|回复: 47
FireflyDaemon -- Firefly的Twisted守护进程版(新增WebSocket支持)
阅读权限50
在线时间 小时
FireflyDaemon简介
FireflyDaemon 是基于 Firefly v1.3.3dev 修改而来.
FireflyDaemon 是作为 twisted 守护进程来启动,可直接在后台运行,避免通过 “python startmaster.py &” 启动而导致的大量文件写入异常。
使用此模式启动将按日来创建主进程的运行日志。
对比Firefly的修改
守护进程可直接在后台运行,避免出现大量的日志写入异常;子进程异常退出后自动重启(使用twisted的ProcessMonitor模块启动子进程);增加各进程状态监控接口,支持控制台输出和JSON输出;主进程异常退出也可以正常保存数据;停止服务端时,主进程会等待子进程全部退出后再退出。可避免重复启动多个实例;各子进程输出日志会带有进程前缀信息,方便查找问题;所有的日志输出都指定到了根目录下的logs目录下
FireflyDaemon新增
优化了配置文件定义方式,在firefly.server.config下新增Config配置管理模块(可查看根目录下的initialize.py文件,初始化配置信息);新增
(控制台版, JOSN输出:) 查看每个进程的状态根目录增加 status.py 状态监控脚本,依赖 curses 模块。服务器启动后会创建 status.json 文件,保存进程ID和进程名称信息,以供 status.py 开启监控最新增加websocket支持和示例 ()暂未完整测试状态监控需要安装 psutil 包, websocket 需要安装 autobahn 包
启动服务端
使用如下命令启动服务端,服务端将自动在后台运行,重复执行该命令时会提示服务已存在:twistd -y startmaster.py复制代码使用该命令启动会在根目录下生成 twistd.pid (主进程的进程ID) 和 status.json (所有进程的进程ID和名称信息) 两个文件,并在根目录下的logs里创建master.log运行日志文件(运行日志将按天创建);
如果需要在控制台打印出日志信息,只需要增加 -n 参数启动即可:
twistd -ny startmaster.py复制代码该模式将不会创建logs/master.log日志文件,且退出时使用Ctrl+C也能正常保存数据
停止服务端
如果服务端是运行在后台的,只能使用如下命令停止服务端:curl http://127.0.0.1:9998/stop复制代码不推荐使用 kill `cat twistd.pid` 的方式停止服务端,虽然两者都能正常保存数据。但直接kill的话,子进程是会自动重启的,也就是主进程将无法正常退出。
服务端状态监控
使用下面的两个命令都可以查看该服务端的进程状态:curl http://127.0.0.1:9998/status
python status.py复制代码如果系统有安装 curses 模块,则推荐使用 status.py 来查看进程状态,效果如下图:
关于WebSocket
本websocket服务使用的是 autobahn 模块,请使用 pip install autobahn 安装 autobahn 模块 (autobahn有基于twisted的websocket扩展)下载全部文件后,使用 twisted -ny startmaster.py 启动服务端, 然后浏览器访问 即可打开WebSocket的示例页面
WebSocket的Client是由HTML5构建,使用HTML5自带的 Blob、DataView、ArrayBuff、FileReader 对象构建和解析二进制数据
解析二进制数据也做了粘包处理,供大家参考 ()
websocket的示例代码在net节点的代码中,通过 initialize.py 初始化配置, 设置 set_ws 即可启用WebSocket
WebSocket的使用同Net类似
最后奉上开源地址:
欢迎大家吐槽和提供修改建议
阅读权限120
在线时间 小时
感谢分享。。
阅读权限200
在线时间 小时
nice...job...
阅读权限120
在线时间 小时
阅读权限80
在线时间 小时
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
阅读权限140
在线时间 小时
欢迎大家吐槽和提供修改建议
阅读权限50
在线时间 小时
必须顶~~~~ 赞~~~~
阅读权限50
在线时间 小时
已经关注。谢谢9秒
阅读权限100
在线时间 小时
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
阅读权限50
在线时间 小时
谢谢&&楼主
大富豪二开自由棋牌真钱1:1十二款游戏完整组件搭
本帖最后由 qq943970 于
19:51 编辑
模块名称:
人人商城V3 3.6.5 开源版 新增支付
外卖小程序版、多店商家版、店内点单、预定菜品
正常使用,淘宝买的。
大富豪高仿蓝月版本
修复了充值接口问题
| 联系方式
COPYRIGHT(C)2015 ZHONGQINGLONGTU NETWORK CO.LTD ALL RIGHTS RESERVED.ICP备号-4
北京中清龙图网络技术有限公司没有更多推荐了,
不良信息举报
举报内容:
Socket在终端退出后,程序如何继续运行
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!求助websocket手机端不能连接问题
[问题点数:60分,结帖人dakulzhan]
求助websocket手机端不能连接问题
[问题点数:60分,结帖人dakulzhan]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2017年2月 总版技术专家分月排行榜第三
2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2017年2月 总版技术专家分月排行榜第三
2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2017年2月 总版技术专家分月排行榜第三
2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2017年2月 总版技术专家分月排行榜第三
2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
匿名用户不能发表回复!|Proxy-Go v3.9 发布,增加了守护进程运行
Proxy-Go v3.9 发布了。Proxy是golang实现的高性能http,https,websocket,tcp,udp,socks5代理服务器,支持正向代理、内网穿透、SSH中转。更新内容:1.增加了守护运行参数--forever,比如: proxy http --forever ,proxy会fork子进程,然后监控子进程,如果子进程异常退出,5秒后重启子进程.该参数配合后台运行参数--daemon和日志参数--log,可以保障proxy一直在后台执行不会因为意外退出, 而且可以通过日志文件看到proxy的输出日志内容.比如: proxy http -p &:9090& --forever --log proxy.log --daemon特点:链式代理,程序本身可以作为一级代理,如果设置了上级代理那么可以作为二级代理,乃至N级代理.通讯加密,如果程序不是一级代理,而且上级代理也是本程序,那么可以加密和上级代理之间的通讯,采用底层tls高强度加密,安全无特征.智能HTTP,SOCKS5代理,会自动判断访问的网站是否屏蔽,如果被屏蔽那么就会使用上级代理(前提是配置了上级代理)访问网站;如果访问的网站没有被屏蔽,为了加速访问,代理会直接访问网站,不使用上级代理.域名黑白名单,更加自由的控制网站的访问方式。跨平台性,无论你是widows,linux,还是mac,甚至是树莓派,都可以很好的运行proxy.多协议支持,支持HTTP(S),TCP,UDP,Websocket,SOCKS5代理.支持内网穿透,协议支持TCP和UDP.SSH中转,HTTP(S),SOCKS5代理支持SSH中转,上级Linux服务器不需要任何服务端,本地一个proxy即可开心上网.协议支持,HTTP(S),SOCKS5代理支持KCP协议传输数据,降低延迟,提升浏览体验.集成外部API,HTTP(S),SOCKS5代理认证功能可以与外部HTTP API集成,可以方便的通过外部系统控制代理用户下载地址:
Proxy-Go 的详细介绍:
Proxy-Go 的下载地址:
转载请注明:文章转载自 开源中国社区
本文标题:Proxy-Go v3.9 发布,增加了守护进程运行
本文地址:
引用来自“开源中国-张学友”的评论这个是用来干嘛的?翻墙吗?引用来自“Andyfoo”的评论@开源中国-张学友 只是个工具,代理,穿洞,端口转发。翻墙你需要外国服务器,然后自己配置服务引用来自“开源中国-张学友”的评论回复 : 局域网端口转发吗?我还以为是公网ip转到自己这里localhost公网局域网均可,可以联通任意两个局域网
引用来自“开源中国-张学友”的评论这个是用来干嘛的?翻墙吗?引用来自“Andyfoo”的评论@开源中国-张学友 只是个工具,代理,穿洞,端口转发。翻墙你需要外国服务器,然后自己配置服务回复 : 局域网端口转发吗?我还以为是公网ip转到自己这里localhost
引用来自“开源中国-张学友”的评论这个是用来干嘛的?翻墙吗?@开源中国-张学友 只是个工具,代理,穿洞,端口转发。翻墙你需要外国服务器,然后自己配置服务
这个是用来干嘛的?翻墙吗?

我要回帖

更多关于 按住ctrl才能导出数据 的文章

 

随机推荐