这是以编程方式终止(取消)芹菜任务的最佳方法

2024-03-17

根据 Celery 的文档,我们不应该使用terminate选项中revoke()取消正在执行的任务的函数:

当任务陷入困境时,终止选项是管理员的最后手段。它不是为了终止任务,而是为了终止正在执行任务的进程,并且该进程可能在发送信号时已经开始处理另一个任务,因此,您绝对不能以编程方式调用它。

http://docs.celeryproject.org/en/latest/userguide/workers.html#revoke-revoking-tasks http://docs.celeryproject.org/en/latest/userguide/workers.html#revoke-revoking-tasks

所以,我的问题是,如果我需要以编程方式取消某些正在运行的任务,我应该如何正确执行?


如果您确实需要终止正在运行的任务,请使用terminate=True in revoke()方法才是正确的方法,也是你最好的选择。问题是这样做并不能保证效果,或者更好地说,可能会产生负面影响。要了解原因,有必要了解撤销的工作原理以及撤销的内容terminate=True做。你打电话时revoke(),您正在通过代理向您的工作人员发送广播消息。这意味着,在您意识到想要/需要终止任务、发送撤销消息并接收工作人员的控制命令之前,工作人员可能已经完成了该任务,从队列中抓取了另一个任务并开始工作它。当它最终收到命令时,它只会杀死工作进程,到那时,它可能已经在处理不同的任务了。

如果您事先知道可能需要中止任务并且可以调整任务代码,您可以看一下可中止的任务 http://docs.celeryproject.org/en/latest/reference/celery.contrib.abortable.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这是以编程方式终止(取消)芹菜任务的最佳方法 的相关文章

随机推荐

  • Jquery/HTML5/Ajax上传进度条?

    我正在开发一个简单的 S3 上传器 让它执行并完成我需要做的事情 但是 我想知道是否有一个易于创建上传进度条的方法 在浏览器的底部 有一条浏览器消息 上面写着 正在上传 是否有任何人知道有关该消息的文章以显示加载栏 理想情况下 该变量将传递
  • 在 SymPy 中,为什么我的解决方案(nonlinsolve)返回错误的答案?

    我有一个由 3 个方程组成的系统 我想找到以下交线或零斜线的解dx dy from sympy import x y z symbols x y z dx x x 3 3 z y dy y 2 0 1 z dz 0 xy nullcline
  • 如何检查 Makefile 中是否存在文件以便将其删除?

    在我的干净部分Makefile我试图在永久删除之前检查该文件是否存在 我使用此代码但收到错误 它出什么问题了 if a myApp then rm myApp fi 我收到此错误消息 if a myApp bin sh Syntax err
  • 独立的共享库

    我需要创建一个共享库 其自身的依赖项 包括 libc libstdc 必须静态链接到它以生成独立的二进制文件 我尝试这样做 g c fpic o foo o foo cpp g static shared o foo so foo o 失败
  • symfony 中的 Doctrine 可搜索行为与 Zend Lucene

    我需要在2个表中搜索关键字 简单的事情 我尚未决定使用其中之一吗 有什么建议吗 Thanks 正如 cuhuak 提到的 Lucene 是全文搜索 由于它是用 Java 编写的 因此您还需要一个 Java 服务器 例如 Tomcat 如果您
  • Swift 中 SQLite 项目中的 UnsafePointer 问题

    我们在 iOS 和 Swift 中实现 SQLite 不使用包装器或 Objective C 桥接 一切工作正常 除了执行查询和提取结果时 问题在于UnsafePointer
  • Nodejs回调机制——哪个线程处理回调?

    我是 NodeJS 的新手 对 Node js 的单实例模型感到好奇 在一个简单的nodeJs应用程序中 当使用回调异步处理某些阻塞操作时 运行nodeJs的主线程是否也会处理回调 如果请求是从数据库中获取一些数据 并且有 100 个并发用
  • 如何处理 REST 调用、数据持久化、同步和观察 ContentProvider

    我知道这个问题已经被问了太多次了 但我认为我想要解决的问题有点不同 也许更复杂 我将开发一个使用RESTful Web 服务并需要具备以下要求 该应用程序应该以列表和详细方式显示一些书籍及其作者和编辑 该应用程序还应该允许搜索书籍 书籍 作
  • Android - 为什么对地理围栏使用待处理意图

    我刚刚完成了 Android 上的地理围栏教程 http developer android com training location geofencing html http developer android com training
  • Swift3 的所有 UIView 中都有不同的字体,每个都有本地化

    我想使用不同的字体直至每种语言 例如 英语中的 roboto 法语中的 openSans 本土化 arrayOfTitle NSLocalizedString comment comment 0 NSLocalizedString prof
  • 如何使用c++中的sort函数对二维数组进行排序?

    我有一个n x m我需要排序的数组 但是 我只需要查看每个一维数组的第一个值即可对较大的数组进行排序 例如 考虑以下二维数组 1 2 4 4 3 5 我不关心子数组中的第二个值 我只需要查看子数组的第一个值即可对其进行排序 所以 我只会看1
  • 在文件中执行 pgsql 命令的 Shell 脚本

    我正在尝试自动化一组创建模板数据库的过程 我有一组文件 file1 file2 fileN 每个文件都包含创建 TEMPLATE 数据库所需的一组 pgsql 命令 文件 创建的 template1 sql 的内容大致如下 CREATE D
  • 如何成为 iOS 的 MDM 供应商

    对此做了很多研究 看到了几个意见 很少有人说我需要苹果企业帐户 也很少有人说我不需要 拥有 MAC 服务器会有帮助吗 我是否需要拥有企业帐户才能成为 MDM 供应商 任何指点都会很棒 我看到了MDM提供的技术业务文档 但它没有解释任何关于服
  • 我想在单击每个树节点时将信息添加到 jpanel jscrollpane 中

    我想在单击每个树节点时将要添加的信息添加到 jpanel jscrollpane 中 请 1 我想控制在Tree java中选择的树节点的状态 其中Frame java 树 java package pms import java awt
  • 有没有办法更改 Nifi 中 PublishJMS 处理器的交付模式?

    我使用 Nifi PublishJMS 处理器向 IBM MQ 发送消息 消息在 MQ 中具有持久性 持久性 我想将其更改为非持久性 Nifi PublishJms 处理器中是否有属性可以纠正此问题 或者是从MQ端完成的 我无权访问 MQ
  • 如何从Python解码pdf加密文件

    我有一个 PDF 文件和关联的密码 我想仅使用 python 将加密文件转换为清晰版本 I found here https stackoverflow com questions 6413441 python pdf library一些
  • 为什么javascript函数的返回值未定义?

    我有一个函数来检测图像的大小 我希望它返回一个包含宽度和高度的对象 在下面的代码中 sz width 和 sz heightwithin该函数保存这些值 但在返回该值后 该值是未定义的 我缺少什么 function getImgSize i
  • 如何将数据库适配器传递给另一个活动?

    我在理解 Android SDK 中的搜索对话框时遇到一些困难 我的应用程序的 主要活动 提供了一个按钮 如果用户单击此按钮 则会调用搜索对话框 然后 搜索本身在异步任务中完成 因为它可能需要一些时间 到目前为止 一切都很好 主活动还创建一
  • UITextView委托问题

    我正在尝试访问 UITextView 委托并遇到问题 我有一个带有 UITextViewDelegate 协议的 UIViewController 和一个包含 textView 的 Nib 如果我在 viewDidLoad 中设置委托 如
  • 这是以编程方式终止(取消)芹菜任务的最佳方法

    根据 Celery 的文档 我们不应该使用terminate选项中revoke 取消正在执行的任务的函数 当任务陷入困境时 终止选项是管理员的最后手段 它不是为了终止任务 而是为了终止正在执行任务的进程 并且该进程可能在发送信号时已经开始处