文档章节

[喵咪Liunx(1)]计划任务队列脚本后台进程Supervisor帮你搞定

喵了_个咪
 喵了_个咪
发布于 2016/04/24 10:40
字数 1539
阅读 1025
收藏 6
点赞 2
评论 0

#[喵咪Liunx(1)]计划任务队列脚本后台进程Supervisor帮你搞定#

##前言##

哈喽大家好啊,好久不见啊(都快一个月了),要问为什么没有更新博客呢只应为最近在录制PhalApi的视频教程时间比较少,作为弥补那么为大家带来一点干货Supervisor,话不多说那么就开始今天的分享把

附上:

喵了个咪的博客:w-blog.cn

Supervisor官网地址:https://pypi.python.org/pypi/supervisor

PhalApi官网地址:http://www.phalapi.net/

开源中国Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release

##1. 我们遇到了什么问题##

了解python的童鞋应该听说过Supervisor,Supervisor是通过python实现的一个进程管理工具,

###1.1需要一直运行到后台的可执行文件启动的服务###

Supervisor是笔者在玩golang的时候了解到的,goalng的web应用API需要运行编译好的可执行文件才能把golang的内建web服务跑起来,和php不同的就是php-fpm会帮你解决这个问题,那么遇到这个问题后我找了很多资料在想我怎么可以让我的进程一直在后台启动并且如果有了问题自己死掉了自动重启呢.

从php的角度来说比如swoole你需要持续运行不依赖php-fpm是一个道理

第一个问题:

就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断。当进程中断的时候我希望能自动重新启动它

解决问题:

Supervisor设计出来的初衷就是用来解决,面对这类问题只需要简单的进行配置然后启动所有的事情都可以交给Supervisor来帮你完成

###1.2队列脚本###

说道队列脚本大家并不陌生,应为在很多场景下面都需要使用尤其是延时比较高的操作的时候(比如微信个推,消息推送,发送邮件,发送验证码)这些基本都是靠队列脚本处理来完成的,但是问题来了队列脚本也需要直接运行,并且在死掉了或者是异常退出了也需要启动起来,

在之前笔者是这么做的使用chontab+shell没过5秒跑一下shell然后shell监控一下脚本有没有死掉,如果死掉了就再次启动

第二个问题

就是有一个队列脚本需要运行

解决问题:

这个和第一个差不多只是场景不同但是需求是一样的都是需要运行一个常驻的后台进程

###1.3计划任务和定时任务###

在很多时候我们同样需要解决计划任务的问题比如晚上5点钟的时候统计数据,或者每个小时需要处理用户信息,那么这就需要用时计划任务和定时任务,在传统的实现方式上面使用chontab的计划任务和定时任务的偏多,但是如果当业务复杂了或者是动态的计划任务带有逻辑的时候就比较痛苦了

第三个问题

解决计划任务和定时任务

解决问题:

对于定时任务可以跑一个脚本在脚本内算出来我和这个时间还相差多少然后阻塞一定时间,当达到这个时间后那么进程结束,Supervisor会再次把你启动起来,但是解决复杂的定时任务或者是多个触发的可能就需要使用到一些辅助了比如node.js的异步swoole的异步能力

这个和第一个差不多只是场景不同但是需求是一样的都是需要运行一个常驻的后台进程

##2. Supervisor安装和使用##

Supervisor主要就两个命令:

supervisord : supervisor的服务器端部分,启动supervisor就是运行这个命令

supervisorctl:启动supervisor的命令行窗口。

安装(Centos):

yum install python-setuptools
easy_install supervisor
//如果easy_install不好使就从官方下载:
//然后通过python安装:
tar zxf supervisor-3.1.3.tar.gz
cd supervisor
python setup.py install

注意:python版本必须是2.x版本

生成配置文件(supervisord.conf):

echo_supervisord_conf > /etc/supervisord.conf

现在比如我需要添加一个需要运行的进程可以修改配置文件/etc/supervisord.conf在末尾加入如下内容:

;你需要启动的进程给个名字
[program:shadowsocks]
;你需要执行的语句
command=php /app/80/task/index.php xxxx
;是否自动启动
autostart=true
autorestart=true
;运行程序的用户
user=root

启动:

使用指定配置文件启动:supervisord -c /etc/supervisord.conf

使用默认配置文件启动:supervisord

启动之后大家可以使用supervisorctl status来获取当前运行的那些有进程

常用命令:

控制命令基本都通过supervisorctl执行,输入help可以看到命令列表。这是一些常用命令:

获得所有程序状态 supervisorctl status
关闭目标程序 supervisorctl stop spider
启动目标程序 supervisorctl start spider
关闭所有程序 supervisorctl shutdown

注意:如果修改了 /etc/supervisord.conf ,需要执行 supervisorctl reload 来重新加载配置文件

##3. 总结##

到这里关于supervisord的介绍就结束了,supervisord解决的常见的一些守护进程的问题,也可以使用到很多场景,那么在后面笔者会抽时间带来phalapi的supervisord计划任务队列脚本的拓展,多谢大家的支持!

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

PhalApi官网QQ交流群:421032344 欢迎大家的加入!

© 著作权归作者所有

共有 人打赏支持
喵了_个咪
粉丝 241
博文 136
码字总数 178071
作品 4
杨浦
技术主管
[喵咪Liunx(4)Monit进程监控

有一段时间没有更新博客了,最近因为公司项目全球化以及最近慢慢在偏向学习团队管理忙的有点不可开交了,不过这次要给大家带来两篇关于Liunx日常开发维护管理中非常好用的两款利器,其中一个就是...

喵了_个咪
2016/10/17
130
0
**小草**/taskPHP

当前版本 2.0 历史版本 -->taskPHP1.0 taskPHP taskPHP基于php开发的定时计划任务框架,利用多进程实现任务的分配和运行,多种进程间通信驱动支持,支持多线程模式需要安装pthreads扩展(可选),支...

**小草**
2017/04/06
0
0
[喵咪Liunx(5)集群管理利器pssh

[喵咪Liunx(5)集群管理利器pssh 哈喽大家好呀!大家在管理服务器的时候如果只是一两台还好,当你管理三台以上的服务器的时候,你安装任何一个软件更改任何一个配置文件就要无比麻烦的每一台机器...

喵了_个咪
2016/10/17
60
0
[喵咪PHP]页面显示空白问题

哈喽!大家好啊,喵咪PHP第一次和大家见面了,熟悉的朋友呢也之道喵咪我也开了喵咪Liunx和喵咪Golang这两个坑目的呢是吧平常遇到的一些问题或者是在学习中的东西好工具分享出来和大家交流沟通,...

喵了_个咪
2016/06/09
408
0
[喵咪Golang(2)]安装和Helloworld

哈喽大家好啊!今天我们紧接着来学习关于Go语言的安装和使用Go打印出helloworld,本节内容将会讲解关于Go语言在Liunx下怎么安装,环境变量怎么配置分别起到了什么作用,然后我们把go运行起来并且...

喵了_个咪
2016/05/23
63
0
CentOS7下Supervisor安装与配置(Linux/Unix进程管理工具)

Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多...

yzy121403725
06/27
0
0
Supervisor安装与配置

Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多...

AltBoy
06/26
0
0
Laravel队列实现(概念讲解与Supervisor配置)

作者:不洗碗工作室 - hanxiao 版权归作者所有,转载请注明出处 为什么要使用队列? 学个框架如果只会写普通业务也太low了,我们要尝试一些高级的玩法(๑•̀ㅂ•́)و✧! CSDN上的一篇有关...

不洗碗工作室
01/14
0
0
PHP进程管理框架--QPM

QPM全名是 Quick Process Management Framework in PHP. PHP 是强大的 web 开发语言,以至于大家常常忘记 PHP 可以用来开发健壮的命令行(CLI)程序以至于 daemon 程序。 而编写 daemon 程序...

赵青
2015/02/27
880
0
定时计划任务框架--taskPHP

taskPHP 基于原生态 php 开发的定时计划任务框架,利用多进程实现任务的分配和运行,利用原生态php内存共享实现进程间通信,支持 linux 和 windows。有较好的伸缩性、扩展性、健壮稳定性而被...

cqcqphper
2017/04/05
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

arts-week1

Algorithm 594. Longest Harmonious Subsequence - LeetCode 274. H-Index - LeetCode 219. Contains Duplicate II - LeetCode 217. Contains Duplicate - LeetCode 438. Find All Anagrams ......

yysue
35分钟前
0
0
NNS拍卖合约

前言 关于NNS的介绍,这里就不多做描述,相关的信息可以查看NNS的白皮书http://doc.neons.name/zh_CN/latest/nns_background.html。 首先nns中使用的竞价货币是sgas,关于sgas介绍可以戳htt...

红烧飞鱼
今天
0
0
Java IO类库之管道流PipeInputStream与PipeOutputStream

一、java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的...

老韭菜
今天
0
0
用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
今天
1
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
今天
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
2
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
1
0
流利阅读笔记33-20180722待学习

黑暗中的生物:利用奇技淫巧快活生存 Daniel 2018-07-22 1.今日导读 如果让你在伸手不见五指的黑暗当中生存,你能熬过几天呢?而大千世界,无奇不有。在很多你不知道的角落,有些生物在完全黑...

aibinxiao
昨天
6
0
Hystrix降级逻辑中如何获取触发的异常

通过之前Spring Cloud系列教程中的《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》一文,我们已经知道如何通过Hystrix来保护自己的服务不被外部依赖方拖垮的情况。但是实际...

程序猿DD
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部