原因

因为最近项目需求中需要提供对异步执行任务终止的功能,所以在寻找停止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在Django 项目中如何使用

    创建目录celery_pro,并在celery_pro下创建下面两个文件 celery.py # celery.py # -*- coding:utf8 -*- from __future__ imp ...

  4. celery 停止_如何解决django-celery启动后迅速关闭

    日志中也没有打印什么明显的错误,只是显示连接了rabbitmq后就关闭了 [2019-09-11 06:08:45,729: INFO/Beat] beat: Starting... [2019-09 ...

  5. 魔坊APP项目-25-种植园,植物的状态改动、当果树种植以后在celery的异步任务中调整浇水的状态、客户端通过倒计时判断时间,显示浇水道具

    种植园 植物的状态改动 一.当果树种植以后在celery的异步任务中调整浇水的状态 在进行果树种植的时候, 在服务端设置当前果树到等待浇水的redis变量中.通过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. 为了热爱Jeez,请停止在软件中使用正则表达式

    如果使用正则表达式无法做到,那么我们将无法做到! 您知道什么是代码混淆器吗? 它是一个小程序或一部分编译器工具链,可以将您的程序代码带入一个看似随机的字母和符号中,从而使其他人无法阅读(不使用互惠工具 ...

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

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

最新文章

  1. python reduce函数_Python reduce函数作用及实例解析
  2. 外中断---汇编学习笔记
  3. 一方包,二方包,三方包的区别
  4. Class的getResource与ClassLoader的getResource路径/问题
  5. php 打包下载网络图片,PHP实现图片批量打包下载功能
  6. Angular_PWA使用+Demo
  7. nginx php 防止跨站,Nginx下多网站单独php-fpm进程目录权限防跨站
  8. JustOj 2038: 叶神的字符串
  9. selenium实现文件上传方法汇总(AutoIt、win32GUI、sengkeys)---基于python
  10. 算法: 用队列Queue实现栈Stack
  11. 打开Spyder的三种方式
  12. 漂亮好听的蓝牙小音箱,真是郊游好玩伴,Sanag M11体验
  13. 【JAVASE】缓冲流,转换流,序列化流,打印流
  14. Java导出Word(导出图片,类,List)
  15. ws2812怎么调亮度_深度解析OLED屏幕的低亮度DC调光是如何实现的?
  16. 盘一盘 Python 系列 - SciPy
  17. 《吴军信息论40讲》学习笔记(完)
  18. Python二维码生成器
  19. FME爬取高德POI数据
  20. STM32关闭PWM输出时,让IO输出固定高或低电平的方法。

热门文章

  1. CRF++中的unigram和bigram features指定是uni/bigrams的输出标签
  2. centos7 菜鸟第一天--输入法在哪
  3. iOS应用开发环境准备
  4. 如何解决linux下编译出现的multiple definition of错误
  5. python 编程(关于twisted)
  6. 嵌入式操作系统内核原理和开发(改进型优先级调度)
  7. qtabbar设置不同宽度_透水地坪需要设置伸缩缝吗?
  8. linux 不显示路径原因,linux 下shell 显示-bash-4.1不显示路径解决办法
  9. 电脑键盘下划线怎么打_电脑键盘失灵怎么办?你应该学会的四种方法
  10. tablesample oracle,Hive DDL 内部表外部表 分区 分桶 行格式 存储文件格式 概述