首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么即使我停止了supervisor,laravel作业也没有停止?

在理解为什么即使停止了supervisor,laravel作业仍然没有停止之前,首先需要了解Laravel作业的工作原理。

Laravel作业是一种用于处理后台任务的功能,它可以通过队列来处理耗时的任务,例如发送邮件、生成报表等。Laravel作业基于队列的异步处理机制,将任务放入队列中,由后台进程或者任务调度程序进行处理。

当使用supervisor来监控和运行Laravel作业时,supervisor会启动一个进程来处理Laravel队列中的任务。这个进程会不断地从队列中获取任务并执行,直到队列为空或者进程被停止。

如果即使停止了supervisor,Laravel作业仍然没有停止,可能是因为以下原因:

  1. 任务正在执行中:如果Laravel作业正在执行中,即使停止了supervisor,任务也不会立即停止。需要等待当前任务执行完成或者超时后,才会停止。
  2. 任务被重新启动:有时候,在停止supervisor后,由于某些原因(例如配置的自动重启),supervisor会重新启动并重新开始处理任务。这样就导致了即使停止了supervisor,作业仍然没有停止。
  3. 任务调度器未被停止:除了supervisor,Laravel还可以使用内置的任务调度器来运行作业。如果任务调度器没有停止,它会继续触发作业的执行,即使supervisor被停止了。

为确保完全停止Laravel作业,可以采取以下措施:

  1. 停止supervisor进程:首先,确保supervisor进程已被完全停止,可以通过命令行或者系统工具来进行确认。
  2. 停止队列服务:Laravel作业依赖队列服务来存储和处理任务,停止队列服务可以确保作业不会被继续处理。具体的停止方法根据使用的队列服务而有所不同,例如Redis队列可以使用redis-cli shutdown命令停止。
  3. 停止任务调度器:如果使用了任务调度器,确保任务调度器已被停止,可以通过命令行或者相关工具来停止。

综上所述,停止supervisor不一定能完全停止Laravel作业的执行,还需要综合考虑其他相关因素。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Supervisor 从入门到放弃

安装 Supervisor 有多种安装方式,推荐其中最简单也是最容易安装的一种 apt-get -y install python-setuptools easy_install supervisor.../supervisor.d/*.ini 运行 Supervisor 启动需加载配置文件 supervisord -c /etc/supervisor/supervisord.conf 停止命令是 supervisorctl...大致功能有 重启、启动、停止进程,打印日志,清除日志等。...基本上就这么几个简单的功能,当然也没有宕机报警,日志报警什么的。不过强大的Supervisor为我们提供接口接口 通过API能获取基本所有的信息,例如进程列表,某个进程的状态,进程日志。...包括对进程的重启、停止、开启等操作,将Supervisor彻底集成到内部监控后台也是没有什么问题的。

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

    它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动重启。...这里以PHP框架Laravel为例,它提供对队列的支持,要让队列监听常驻内存,就需要借助Supervisord守护进程工具,同时,解决使用了Supervisor后,Laravel队列被重复执行的问题...#supervisor服务的一些配置 队列任务配置 在 /etc/supervisord.d/ 目录中新增 laravel-worker.ini [program:sendMail] process_name...=send_mail --sleep=3 autostart=true autorestart=true user=root #numprocs=8 redirect_stderr=true 配置中,注释掉了...numprocs=8 ,这是之前踩的一个坑,设置进程数为8,最后的一个队列被重复执行多次,但在 job 表中只生成了一条记录,很显然就是 supervisor 配置问题导致,先把这里注释

    58020

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

    它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动重启。...这里以PHP框架Laravel为例,它提供对队列的支持,要让队列监听常驻内存,就需要借助Supervisord守护进程工具,同时,解决使用了Supervisor后,Laravel队列被重复执行的问题...#supervisor服务的一些配置 队列任务配置 在 /etc/supervisord.d/ 目录中新增 laravel-worker.ini [program:sendMail] process_name...=send_mail --sleep=3 autostart=true autorestart=true user=root #numprocs=8 redirect_stderr=true 配置中,注释掉了...numprocs=8 ,这是之前踩的一个坑,设置进程数为8,最后的一个队列被重复执行多次,但在 job 表中只生成了一条记录,很显然就是 supervisor 配置问题导致,先把这里注释

    68120

    laravel-s 在 Docker 中使用(包含队列的使用)

    docker run -d -p 80:5200 --name=demo-service demo-image 开发 运行挂载本地目录开发 ## 运行容器 (/mnt/d/laravels-demo 是项目的目录...https://wenda.swoole.com/detail/107688 直接下载so文件放入容器中,然后修改php.ini开启扩展, 之后php -m看到swoole-tracker就代表安装成功...守护进程 RUN apk add supervisor ## 修改配置文件 RUN mkdir /etc/supervisor.d/ && echo $'\n\ [program:laravel-worker...-f queue.Dockerfile -t laravel-worker 运行队列容器 docker run -d --name=laravel-worker-service laravel-worker...会把时间戳t2写入缓存 每一个队列任务执行完成之后,从缓存中拿出时间戳,如果t2不等于t1停止当前进程 由于supervisord设置autostart, 又会重启队列进程, 这样子就不会中断任务 更新代码方法

    25710

    Storm入门(二):架构模型和集群部署

    ,由Nimbus将该节点上正在运行着的任务重新分配给其他supervisor执行 Supervisor 从节点 从Zookeeper上获取Nimbus分配的任务,负责启动和停止本机上worker进程来执行任务...需要将自己的运行状态汇报到zookeeper上,由Nimbus监控 Executor 真正执行任务的线程(负责执行客户提交到Storm集群上任务中Task(spout/bolt)),由worker启动和停止...不会直接进行通讯,而是依赖于 zookeeper 这个组件,这也是Storm的一个设计巧妙之处,很好的避免了 主从之间依赖而产生的系列问题 安装 Storm 集群 安装什么的比较简单,这里就不再造轮子,...提交作业到 Storm 集群 这里我们将上一篇讲到的代码,稍微改一改就可以,当传入的参数大于1,我们将第一个参数作为 该作业的 名称 提交到集群去运行,否则就是本地测试模式 public static...; localCluster.submitTopology("test", config, topology); } } 打成 jar 包 这个就不要说了吧

    65320

    static 静态变量引起 Laravel 中队列一个 Bug

    赶紧排查一下日志, 发现队列中的日志打点数据有问题,随后增加更多打点, 最后定位到了这个地方....queue:restart重置 所以可以用queue:restart这条命令去停止队列进程(并不会自动启动队列进程,可以配合Supervisor来自动重启) 接下来是一个死循环,来达到进程不被杀死 第一个逻辑判断死看程序是否已经启动的维护模式...,强制运行等等,就是队列任务是否能继续处理的前置判断 所以我们想临时暂停队列进程,可以向进程发送一个SIGUSR2信号,这时候队列进程处理完当前任务下一次就会停止,当想继续处理的时候,再发送一个SIGCONT...那么就结束任务 下一步如果取出来的没任务, 那么就程序休眠, 否则就运行任务, 这里可以去看一下任务的实际运行代码 Laravel Laravel 这里我们直接看fire方法即可..., 然后找到对应的队列驱动类,继承父级的fire方法 Laravel 实际上是反射了这个job类然后调用它对应的方法 循环前的最后一个代码块就是stopIfNecessary, 看进程是否需要终止

    19510

    Laravel使用Queue队列的技巧汇总

    了解了为什么使用队列,那么一般有这么几类任务使用队列: 耗时比较久的,比如上传一个文件后进行一些格式的转化等。...Laravel 内置一个方便的方式来指定任务重试的最大次数。当任务超出这个重试次数后,它就会被插入到 failed_jobs 数据表里面。...这个值的设定个人建议不要太短,因为一个任务失败(比如网络原因),重试时间太短可能会出现连续失败的情况。 --sleep=3 去 Redis 中拿任务的时候,发现没有任务,休息多长时间,单位是秒。...可以考虑使用 Laravel Forge,它能给你的 Laravel 项目自动安装与配置 Supervisor。...update sudo supervisorctl start laravel-worker:* 更多有关 Supervisor 的设置与使用,请参考 Supervisor 官方文档 总结 以上就是这篇文章的全部内容

    2.5K10

    Laravel5.5之事件监听、任务调度、队列

    $this->user->email); } } 3.3 分发任务 你写好任务类后,就能通过 dispatch 辅助函数来分发它。...3.4 运行队列处理器 php artisan queue:work Tips:要注意,一旦 queue:work 命令开始,它将一直运行,直到你手动停止或者你关闭控制台 处理单一任务:你可以使用 --...拓展:使用 Beanstalkd 管理队列,Supervisor 则是用来监听队列的任务,并在队列存在任务的情况下自动帮我们去执行,免去手动敲 php artisan 的命令,保证自己的队列可以正确执行...参考文档:Laravel5.5 的事件系统 参考视频01:Coding 10编程原动力 - Laravel5.5 事件监听 参考视频02:Coding 10编程原动力 - Laravel5.5 定时任务...参考视频03:轻松使用 Laravel 队列

    1.4K20

    ubuntu下的进程控制系统————Supervisor

    去帮我们维护各种服务器的进程,即使有软件崩了也能帮我们自动重启 Supervisor 首先先把官网丢上来http://supervisord.org/ 安装 两种方式去安装 直接使用apt包管理安装 $...sudo apt-get install supervisor 通过pip安装 $ sudo pip install supervisor 安装成功后,supervisor就会默认启动 使用说明...如果这个程序使用了 python 的 multiprocessing 时,就能自动停止它的子线程。...pid),退出后会将写文件或日志(推荐) ;终止:TERM(kill -TERM pid) ;挂起:HUP(kill -HUP pid),注意与Ctrl+Z/kill -stop pid不同 ;从容停止...; 密码 (default is no password (open server)) 注: 上述环境在ubuntu16.04 lts中测试成功 上述文字皆为个人看法,如有错误或建议请及时联系

    86810

    分布式计算技术之流计算Stream,打通实时数据处理

    如果用户停止当前作业运行后再次提交作业,由于流计算不提供数据存储服务,因此之前已经计算完成的数据无法重新再次计算。 二,加载流式数据进行流计算。...Supervisor 负责监听分配给它所在的机器上的工作,负责接收 Nimbus 分配的任务,并根据需要启动和停止工作进程,其中每个工作进程都执行一个子任务。...前面介绍 Nimbus 是负责分发任务或代码的,Supervisor 是负责接收任务,并启动和停止工作进程以执行任务的。那么 Nimbus 和 Supervisors 之间,具体是怎么协同的呢?...将这两种计算模式的特点,总结为了一张表格,以帮助你理解、记忆,以及选择适合自己业务场景的计算模式。 ? 总结 今天,与你介绍分布式计算模式中的流计算。...在介绍流计算的工作原理时,首先通过一个流程图,与你介绍它的 3 个步骤,即提交流式计算作业、加载流式数据进行流计算和持续输出计算结果。

    2K20

    自动化测试之进程管理

    在之前的一篇文章《终端自动化测试探索之路》中提到过当发生断电等情况,服务器重启之后如何快速恢复自动化服务,这里针对这个问题具体讲讲的实现方式。...方案选型 基于上述原因,考虑采用supervisor来管理这些进程,supervisor是一个UNIX-like系统上的进程管理工具,是一个由Python开发的c/s系统,可以管理和监控unix上面的进程...而且我们管理supervisor的时候的可以在本地进行管理,也可以远程管理,而且supervisor提供一个web界面,我们可以在web界面上监控、管理进程。...而在linux系统上是没有这种功能的,我们想要停止一个进程,只能一个一个的去停止,要么就自己写个脚本去批量停止。...想要控制的话,必须要有root权限,而supervisor提供一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程

    33520

    Vapor奇幻之旅(02部署)

    $ sudo apt-get install nginx 安装完Nginx后需要配置防火墙,如果不用防火墙也没有问题,作为练习使用可以关闭防火墙。...第一次弄这个的时候开了防火墙,发现ssh连接不上了,后来想到可能是防火墙阻止,于是去阿里云网站打开终端关闭防火墙,这时才能用系统的终端连接ssh。...以前试过很多方法,但是都并不稳定,直到官方推荐Supervisor,才如获至宝,Supervisor是一个进程管控程序,可以让我们很容易的控制vapor程序的启动和停止 安装Supervisor...=PORT=8080 修改项目里的Config/production/servers.json 只需要修改这一行 "port": "$PORT" 这样项目就可以使用supervisor配置的端口...,你们的赞是持续的动力,欢迎加入QQ群参与互动:431296189

    1.2K30

    网站功能——使用 Supervisor 部署 Django 应用程序

    其实的网站一开始的部署方式就是 gunicorn 启动 Django,就很简单的一个运行命令就行了。...进程控制:Supervisor允许您通过命令行或API控制进程的启动、停止、重启等操作。这使得管理和操作进程变得更加便捷,无需手动干预或编写复杂的脚本。...服务的操作 现在,可以使用Supervisor来启动、停止和管理Django应用程序。...通过以上步骤,我们成功地使用Supervisor部署Django应用程序。Supervisor将负责监控应用程序的运行状态,并在需要时自动重启应用程序。...停止Supervisor 停止命令: supervisorctl shutdown 容器化部署改动 修改 Dockerfile 由于更改了部署方式,所以在容器里面也要修改一下,之前是直接使用 gunicorn

    61020
    领券