前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS Supervisord守护进程实现Laravel异步队列任务

CentOS Supervisord守护进程实现Laravel异步队列任务

作者头像
Petrochor
发布2022-06-07 15:42:48
5810
发布2022-06-07 15:42:48
举报
文章被收录于专栏:Stephen

Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动重启。

这里我以PHP框架Laravel为例,它提供了对队列的支持,要让队列监听常驻内存,就需要借助Supervisord守护进程工具,同时,解决使用了Supervisor后,Laravel队列被重复执行的问题(自己的配置问题)。

安装 Supervisor

代码语言:javascript
复制
yum install -y supervisor

目录结构:

代码语言:javascript
复制
/etc
    supervisord.d/ #我们自定义的项目进程配置目录
    supervisord.conf #supervisor服务的一些配置

队列任务配置

/etc/supervisord.d/ 目录中新增 laravel-worker.ini

代码语言:javascript
复制
[program:sendMail]
process_name=%(program_name)s_%(process_num)02d
command=/usr/local/php/bin/php /var/www/LaravelProject/artisan queue:work --queue=send_mail --sleep=3
autostart=true
autorestart=true
user=root
#numprocs=8
redirect_stderr=true

配置中,我注释掉了 numprocs=8 ,这是之前踩的一个坑,设置进程数为8,最后我的一个队列被重复执行多次,但在 job 表中只生成了一条记录,很显然就是 supervisor 配置问题导致,先把这里注释了。

启动 Supervisord

代码语言:javascript
复制
supervisord -c /etc/supervisord.conf

如果报错了,并且执行 systemctl status supervisord 状态为 failed ,表示失败了,先杀死在执行的进程

查看 supervisord 进程

代码语言:javascript
复制
ps -ef | grep supervisord
代码语言:javascript
复制
[root@izwz99d7x8qidiasecenewz ~]# ps -ef | grep supervisord
root      1319     1  0 Jan20 ?        00:00:28 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
root     29834 29053  0 19:41 pts/0    00:00:00 grep --color=auto supervisord

然后执行 kill -s SIGTERM {pid}

代码语言:javascript
复制
kill -s SIGTERM 1319
kill -s SIGTERM 29834

启动队列任务

代码语言:javascript
复制
supervisorctl reread
supervisorctl update
supervisorctl start sendMail:*
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/01/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装 Supervisor
  • 队列任务配置
  • 启动 Supervisord
  • 启动队列任务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档