原因

因为最近项目需求中需要提供对异步执行任务终止的功能,所以在寻找停止celery task任务的方法。这种需求以前没有碰到过,所以,只能求助于百度和google,但是找遍了资料,都没找到相关的能停止celery task任务的方法(网上找到的一个方法实测不能用,可能是celery版本的原因,我的项目目前使用的是celery 4.0.2)

解决过程

由于网上找不到解决办法,于是只能自己想办法了。

想到celery 管理工具flower里面好像有停止celery task的功能,于是去找flower的源码,找到接口的源码如下:

logger.info("Revoking task '%s'", taskid)

terminate = self.get_argument('terminate', default=False, type=bool)

self.capp.control.revoke(taskid, terminate=terminate)

self.write(dict(message="Revoked '%s'" % taskid))

核心代码是self.capp.control.revoke 想到去celery里面找寻revoke函数,发现有两处比较可疑,第一个是celery.worker.control.revoke,第二个是celery.app.control.Control.revoke,直觉来看,应该是第二个方法,但是第二个方法是在一个类里面的,要调用这个方法首先需要获取到celery app的实例,后来去celery 配置里面找,发现在__init__.py文件里面有__all__ = ['celery_app']这么一句,于是找到突破点了,引用这个包就能获取到celery_app了。

from test.ceyery_proj import celery_app

celery_app.control.revoke(task_id, terminate=True)

通过这个方法就能终止正在执行的task,至于task_id在执行任务的时候返回了,我将这个id存储在数据库中,这样就可以被拿来控制task的执行了。

写这篇文档的目的主要是帮助小伙伴们不要再踩这个坑了,也为celery提供一点文档补充吧。

celery 停止任务_celery 停止执行中 task相关推荐

  1. celery 停止_celery 停止执行中 task

    原因 因为最近项目需求中需要提供对异步执行任务终止的功能,所以在寻找停止celery task任务的方法.这种需求以前没有碰到过,所以,只能求助于百度和google,但是找遍了资料,都没找到相关的能停 ...

  2. celery 停止执行中 task

    目录 原因 解决过程 原因 因为最近项目需求中需要提供对异步执行任务终止的功能,所以在寻找停止celery task任务的方法.这种需求以前没有碰到过,所以,只能求助于百度和google,但是找遍了资 ...

  3. celery 停止任务_celery异步任务框架

    目录 Celery 一.官方 二.Celery异步任务框架Celery架构图消息中间件任务执行单元任务结果存储 三.使用场景 四.Celery的安装配置 五.两种celery任务结构:提倡用包管理,结 ...

  4. 任务队列:celery快速入门及django中celery的用法

    文章目录 一.celey的简介 1.1 celery的工作机制 1.2 安装celery(5.2版本) 二.celery快速入门 2.1 选择broker 2.2 celery的简单使用 2.2.1 ...

  5. celery的中文_Celery4.1中文文档

    Application Celery 库在使用之前必须初始化,一个celery实例被称为一个应用(或者缩写 app). Celery 应用是线程安全的,所以多个不同配置.不同组件.不同任务的 应用可以 ...

  6. Spark中Task,Partition,RDD、节点数、Executor数、core数目(线程池)、mem数

    Spark中Task,Partition,RDD.节点数.Executor数.core数目的关系和Application,Driver,Job,Task,Stage理解 from:https://bl ...

  7. c#中Task线程的用法

    1.Task的优势 ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便.比如: ◆ ThreadPool不支持线程的取消.完成.失败通知等交互性 ...

  8. 下面关于在dos停止mysql_下面关于在DOS停止MySql的命令中,正确的是 (5.0分)_学小易找答案...

    [单选题]下面语句中,可以创建数据库和创建表的是 (5.0分) [简答题]253页10.1第一大题 [单选题]下面关于在DOS停止MySql的命令中,正确的是 (5.0分) [单选题]下面关于SQL全 ...

  9. verilog中task、function和moudle的区别

    verilog中task.function和moudle的区别 task可以启动其他任务或者函数:而function不能启动任务 task可以定义自己的仿真时间,而function不可以: funct ...

最新文章

  1. P1912 [NOI2009]诗人小G
  2. 明源云·天际,地产⾏业的Salesforce Lightning Platform
  3. 等保2.0安全管理制度对比_一手资料!等保2.0云计算安全与风险评估
  4. dnt 删除不良数据
  5. 数据库链、物化视图、高级复制方面
  6. Java并发基础问题总结
  7. pandas常用功能手册
  8. mset redis_Redis MSET 命令
  9. Linux搭建syslog日志服务器
  10. unity使用easy ar制作ar红包
  11. 阿里巴巴DevOps文化浅谈
  12. 通俗科普:弦论要求空间必须是25维的解释
  13. 不提杨元庆,先看看联想该如何让Moto复活
  14. Ad Mucher最新有效注册,升级方式
  15. 转换xml格式的短信记录
  16. Ubuntu16.04开机后黑屏无法进入登陆界面的解决办法
  17. uniapp拨打电话
  18. 服务器电源系统,服务器电源系统于新一代数据中心设计的基础意义
  19. 【译】SQ3R学习法则
  20. 使用VMWare虚拟机创建CentOS版本的Linux学习环境(每一步都有截图与说明)

热门文章

  1. jQ选择器与常用的方法归纳
  2. expressjs mp4_了解如何在ExpressJS 4.0中使用新路由器
  3. Deblur-NeRF CVPR 2022
  4. 矩阵分析:Kronecker积,Hadamard积
  5. android平板电脑的虚拟键盘,触控、手写、虚拟键盘的操作体验
  6. 大数据架构中的流式架构和Kappa架构
  7. STM32F407-用TB6600驱动器驱动57步进电机(代码+连线)
  8. 【SoC FPGA】外设PIO按键点灯
  9. Caffeine - Caches - Eviction
  10. 浅谈共线性的产生以及解决方法(上篇——前世)